web框架django 课上总结

###OSI七层模型 - 应用层 - 表示层 应用层 - 会话层 - 传输层 - 网络层 - 数据链路层 - 物理层 - socket 套接字 位于应用层和传输层之间虚拟层,一组接口 - c/s b/s - 百度服务器 socket服务端 - 1.绑定ip和端口 - 2.等待连接 - 5.接受数据 - 6.返回数据 - 9.断开连接 - 浏览器 socket客户端 - 3.连接服务端 - 4.发送数据 - 7.接受数据 - 8.浏览器渲染数据 - 9.断开连接 ###HTTP  - 1.请求和响应 - 请求(request) 浏览器给服务器发的消息 - 格式: - 请求方法 URL路径 协议版本 - k1: v1 - k2: v2 - 请求数据 - GET 没有请求数据 - 响应(response) 服务器给浏览器回的消息 - 格式: - HTTP/1.1 状态码 状态描述 - k1: v1 - k2: v2 - 响应数据(HTML文本) - 2.请求方法 8种 - GET 获取一个页面 - POST 提交数据 - 3.状态码 - 1xx - 2xx 200 201 - 3xx 重定向 - 4xx 请求的错误 404 403 - 5xx 服务器的错误 ###web框架的功能 - 1.socket收发消息 - 2.根据不同的路径返回不同结果 - 3.返回动态页面 (字符串的替换) 模板的渲染 - Django flask tornado ### 1.下载安装 - 1.命令行: - pip install django==1.11.22 -i https://pypi.tuna.tsinghua.edu.cn/simple/ - pip install django 不指定版本号,默认安装最新版 - 2.pycharm ### 2.创建项目 - 1.命令行 - 切换一个存放项目的目录下 - django-admin startproject 项目名称 - 2.pycharm - file _> new project _> 左侧选Django ——》 输入项目的路径 ——》 选择解释器 ——》 创建 ###3.启动 - 1. 命令行 - 切换到项目的根目录下 manage.py - python manage.py runserver # 默认127.0.0.1:8000  - python manage.py runserver 80 # 指定端口号127.0.0.1:80 - python manage.py runserver 0.0.0.0:80 #共享并指定端口号 0.0.0.0:80 - 2. pycharm ###4.配置 - BASE_DIR 项目的根目录 - TEMPALTES 模板的配置 DIRS = [] - DATABASES 数据库 - STATIC_URL =/static/ 静态文件的别名 - STATICFILES_DIRS = [ # 以后静态文件找不到 首先看这个配置 os.path.join(BASE_DIR,static) ] ###5.APP - 创建 - 命令行:python manage.py startapp app名称 - 注册: INSTALLED_APPS = [ django.contrib.admin, ... app01, app01.apps.App01Config # 推荐的方式  ] ###6.提交POST请求  目前情况 注释 MIDDLEWARE django.middleware.csrf.CsrfViewMiddleware ###7.urls.py  - url路径和函数的对应关系 urlpatterns = [ url(r^admin/, admin.site.urls), url(r^login/, views.login), ] ###8.写函数  - app下的views.py中 - def xxx(request): - request —— 请求相关的内容 - request.method —— 请求方式 GET POST - request.POST —— form 表提交POST请求的数据 {} - return 响应 - 响应: - from django.shortcuts import render, HttpResponse, redirect - HttpResponse —— 》 返回的字符串 - render(request,模板的文件名,{}) ——》 返回是一个页面 - redirect(重定向的地址) ——》 重定向 - 模板 templates ###9.orm对象关系映射(object relational mapping) - django 使用mysql数据库的配置: - 1.创建一个mysql数据库 - 2.在settings中配置数据库: - 3.使用pymysql模块连接mysql数据库 在与settings同级目录下的__init__.py中: import pymysql pymysql.install_as_MySQLdb() - 4.创建表,在app下的models.py中写类: ```python from django.db import models # Create your models here. class UserInfo(models.Model): username = models.CharField(max_length=32) # varchar(32) password = models.CharField(max_length=32) ``` - 5.执行数据库迁移的命令 - python manage.py makemigrations # 创建迁移文件 记录上models.py的变更记录  - python manage.py migrate # 执行迁移数据库  ###10. orm具体操作: ```python ret = models.Publisher.objects.all() # 查询所有的数据 对象列表 for i in ret: print(i,type(i)) # 对象 对应数据库一条数据 print(i.name,i.id) # 属性 字段的值  models.Publisher.objects.filter(name=publisher_name) 查不到就是空列表 models.Publisher.objects.create(name=publisher_name) 新增 models.Publisher.objects.filter(id=id).delete() 删除 修改 publisher_name = request.POST.get(publisher_name) # 编辑 pub_obj.name = publisher_name # 只在内存中有变化 pub_obj.save() # 保存修改到数据库 ``` ###11.模板 ```html {% for pub in ret %} <tr> <td>{{ pub.id }}</td> <td>{{ pub.name }}</td> </tr> {% endfor %} ```