Django 请求生命周期

 

浏览器

遵循 HTTP协议:超文本传输协议

  - 请求首行

  - 请求头 

  -

  - 请求体

四大特性:

  - 基于请求响应

  - 基于TCP/IP之上,作用域应用层的协议

  - 无状态

  - 无连接

笔记连接

数据格式:contentType

  - urlencoded :form 与 Ajax 默认的

  - formdata : form表单传输文件

  - josn : Ajax使用 

  - 补充: Ajax 传输文件使用内置对象:new Formdata()

笔记连接

Django后端

<1> wsgiref (web服务网关接口)

作用:将HTTP协议的数据格式切分成字典的形式

特点:是django自带的,本身效率不高,仅支持1000左右的并发量,后期上线后会换成wsgi

问: WSGI 与 wsgiref,uwsgi是什么关系?

  答:WSGI 是协议,wsgiref与uwsgi都是实现该协议的功能模块

笔记连接

<2>django中间件

作用:安保,请求会依次经过注册了的中间件到达路由层

应用:对所有请求或一部分请求做批量处理

特点:django默认七个中间件,并有五种自定义方法

补充:当请求到达某一个中间件时会先到缓存中查看是否有缓存,若有则直接响应到浏览器,不在走后端,若没有则继续向后端请求,当后端处理完向前端的响应到达某个中间时会给前端一份,在缓存中存一份.

笔记连接 

<3>urls(路由层)

作用:将请求的功能与对应的功能函数做分发处理

知识点:

  - 静态路由(普通路由)

  - 动态路由 :有名分组,无名分组,

  - 反向解析(路由起别名),

  - 名称空间,路由分发(include)

笔记连接

<4>views(视图函数)

作用:核心逻辑的处理

两大类:FBV 与 CBV

知识点:

  - froms组件 :1.渲染页面, 2.校验数据, 3.展示信息   局部钩子,全局钩子  链接

  - auth模块 : 校验用户认证相关  链接

  - cookie 与 session   连接

  - 注意:逻辑处理完成向浏览器响应时,也要一次经过中间件,到达wsgiref打包成HTTP协议格式后发生到浏览器

笔记连接 

<5.1>templates(模板层)

作用:html页面

知识点:

  - 模板语法 {{ 变量相关 }} , { % 逻辑相关 % };

  - 模板导入{% include 'beautiful.html' %},

  - 模板继承,{% extend 模板名.html %}, {% block 块名 %}

  - 自定义标签,自定义过滤器,inclusion_tag

  - csrf 跨站请求伪造{% csrf_token %}  注意:Ajax请求时有三种方式

笔记连接

<5.2>models

作用:对象系映射(创建表)

知识点:

  - 数据库迁移命令: python3 manage.py makemigrations  /  python3 manage.py migrate

  - 增删改查(create,delete,update,all,filter),双下划线查询(__gt, __lt, __in=[ ], __range=[ ],......),

  - 聚合查询

  - 分组查询

  - F 与 Q 查询

  - only 与 defer

  - select_related 与 prefetch_related

  - 补充:模型表中的外键字段可以看做是被关联表中的一条记录(即对象),正向外键字段,反向表名小写

笔记连接

数据库

django连接数据库(如:MySQL)

<1>在settings.py文件中配置

<2>在项目或app中的__init__.py文件中声明

知识点:

  - 查询 (单表,多表)

  - 索引  连接

  - 查询优化

原文地址:https://www.cnblogs.com/waller/p/11612611.html