Django的请求生命周期与中间件中的5中方法
请求生命周期:
客户端——>WSGI——> 中间件——>路由匹配——>视图函数——>WSGI——>客户端
中间件:
在全局层明处理请求和响应的
form django.utils. deprecation import MiddlaraMixin
5种方法与4个要点:执行顺序,执行时间,参数,返回值
方法:
process_request
process_views
process_exception
process_response
process_template_response
process_request(self,request)
参数:request
返回值:
None:正常流程,继续执行下一个中间件的process_request(按照中间件的注册顺序);
HttpResponse对象:下面中间件的方法不再执行,直接执行当前中间件的process_response方法,然后倒叙向上执行同一个方法;
执行顺序:按中间件注册顺序,顺序执行
执行时间:WSGI之后,路由匹配之前;
process_view(self,request,func_name,callback_args,callback_kwargs)
参数:request,func_name,callback_args,callback_kwargs
返回值:
None:正常流程
HttpResponse对象: 下面中间件的同方法不执行,视图函数也不执行,直接执行最后一个中间件的process_response方法,倒序向上执行此方法;
执行顺序:按照中间件注册顺序,顺序执行
执行时间:视图函数之前,路由匹配之后,
process_response(self,request,response)
参数:request,
response 返回给浏览器的响应对象
返回值:
None:正常流程
HttpResponse对象: 正常流程,继续执行中间件的同方法,必须返回的
执行顺序:按照中间件注册顺序,倒叙序执行
执行时间:视图函数之后,进入WSGI之前
process_exception(self,request,exception)
#处理视图层明的异常
参数:request,
exception:视图发生的错误对象
返回值:
None:交个下一个中间件处理,最后交个django处理
HttpResponse对象:执行最后一个中间件的process_response方法,倒叙向上执行
执行顺序:按照中间件注册顺序,倒叙序执行
执行时间(触发条件):视图函数发生错误之后,被调用,
process_template_response(self,request,response)
return response
参数:request,
response:返回的响应对象
返回值:
HttpResponse对象:必须返回,倒叙向上执行
执行顺序:按照中间件注册顺序,倒叙序执行
执行时间(触发条件):视图函数返回TemplateResponse对象或Response对象有render方法
Django的请求生命周期与中间件中的5中方法的更多相关文章
- Django组件 - Django请求生命周期、中间件
一.Django请求生命周期 在学习中间件之前,先了解一下Django的请求生命周期,如下图: 1)client代表浏览器,浏览器内部为我们封装了socket,Django的WSGI模块也封装了soc ...
- Django组件---Django请求生命周期和中间件
Django组件---Django请求生命周期和中间件 Django请求生命周期 说明: client代表浏览器,浏览器的内部为我们封装了socket,Django的WSGI模块也为我们封装了sock ...
- Django 框架 django的请求生命周期
概述 首先我们知道HTTP请求及服务端响应中传输的所有数据都是字符串,同时http请求是无状态的,可以通过session和cookie来辅助. 浏览器通过ip和端口及路由方式访问服务端. 在Djang ...
- Django的请求生命周期
Django的请求生命周期 请求生命周期 请求生命周期是指当用户在浏览器上输入url到用户看到网页的这个时间段内,Django后台所发生的事情. 1.客户端发送Http请求 2 .服务器接收,根据请求 ...
- DRF框架(一)——restful接口规范、基于规范下使用原生django接口查询和增加、原生Django CBV请求生命周期源码分析、drf请求生命周期源码分析、请求模块request、渲染模块render
DRF框架 全称:django-rest framework 知识点 1.接口:什么是接口.restful接口规范 2.CBV生命周期源码 - 基于restful规范下的CBV接口 3.请求组件 ...
- Django框架请求生命周期
先看一张图吧! 1.请求生命周期 - wsgi, 他就是socket服务端,用于接收用户请求并将请求进行初次封装,然后将请求交给web框架(Flask.Django) - 中间件,帮助我们对请求进行校 ...
- 【转】Django框架请求生命周期
https://www.cnblogs.com/gaoya666/p/9100626.html 先看一张图吧! 1.请求生命周期 - wsgi, 他就是socket服务端,用于接收用户请求并将请求进行 ...
- Django之请求生命周期
settings.py中间件执行 自定义中间件的配置: (1)任意新建一个py文件,导入模块from django.utils.deprecation import MiddlewareMixin ( ...
- Django Http请求生命周期
day54 请求响应Http 1.发送Http请求 2.服务器接收,根据请求头中的的url在路由关系表中进行匹配(从上到下) 3.匹配成功后,执行指定的views函数 4.业务处理 URL----&g ...
随机推荐
- Java的三种工厂模式
一.简单工厂模式 简单工厂的定义:提供一个创建对象实例的功能,而无须关心其具体实现.被创建实例的类型可以是接口.抽象类,也可以是具体的类 实现汽车接口 //产品接口 //汽车需要满足一定的标准 pub ...
- Cloudera Manager 概念
cloudera公司发布的CDH集群,使用Cloudera Manager来管理整个集群,使用过程中主要涉及到几个关键概念:cluster.service.role.host.直接上图,直观理解几个概 ...
- Css3 伪元素
伪元素---用于向某些选择器设置特殊的效果 语法:元素::伪元素 (element::pseudo-element) 兼容性:IE9+ FireFox4+ Chrome Safari Opera fi ...
- 【ABAP系列】ABAP CL_ABAP_CONV_IN_CE
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]ABAP CL_ABAP_CON ...
- sizeof与strcpy的区别
转自:http://c.biancheng.net/view/342.html 表面上看strcpy和sizeof都是求字符串的长度,但是二者却存在着许多不同之处及本质区别 strlen是一个函数,用 ...
- beego conf配置文件
1. 多个配置文件通过include引入 自定义配置文件mysql.conf 在app.conf 中引入mysql.conf include "mysql.conf"
- VUE缓存:keep-alive
VUE缓存:动态keep-alive:https://www.jianshu.com/p/11f7dbc07ad3 keep-alive include和exclude无效问题:https://blo ...
- jqGrid只向服务器请求一次的设置
也就是说,在表格初始化时请求一次服务器,以后翻页就不再请求服务器,翻页的也只是初始化数据. 一次复制别人的代码时,一直不知道为什么翻页不请求服务器. 搞到人都爆炸,原来只是一个设置的地方. loado ...
- HDU 6470 【矩阵快速幂】
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6470 写这道题是为了让自己不要忘记矩阵快速幂如何推出矩阵式子的. 注意 代码是TLE的!! #incl ...
- DB2 数据库权限
以下内容转载: http://blog.csdn.net/xiyuan1999/article/details/8135263 DB2中的权限 DB2 中有三种主要的安全机制,可以帮助 DBA 实现 ...