Django 请求生命周期

本文深入解析HTTP协议的工作机制,包括请求与响应过程、数据格式等,并详细介绍了Django框架从接收到处理HTTP请求的全过程,涵盖wsgiref、中间件、路由、视图、模板及数据库操作等关键环节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

 

 

 

浏览器

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

  - 请求首行

  - 请求头 

  - \r\n

  - 请求体

四大特性:

  - 基于请求响应

  - 基于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组件,

  - auth模块

  - cookie 与 session

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

 

<5.1>templates(模板层)

作用: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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值