doraemon的python django的中间件(国庆大更新)

Posted 番茄炒蛋548542

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了doraemon的python django的中间件(国庆大更新)相关的知识,希望对你有一定的参考价值。

### 11.13  中间件

中间件的定义:

中间件是处理django的请求和相应的框架级别的钩子,本质上就是一个类

中间件可以定义为五个方法:

- process_request(self,request)
- process_view(self, request, view_func, view_args, view_kwargs)
- process_template_response(self,request,response)
- process_exception(self, request, exception)
- process_response(self, request, response)

4个特征:执行时间、执行顺序、参数、返回值



1.process_request(self,request)

执行时间:视图函数之前

参数:request   —— 》 和视图函数中是同一个request对象

执行顺序:按照注册的顺序  顺序执行

返回值:

​        None : 正常流程

​        HttpResponse: 后面的中间的process_request、视图函数都不执行,直接执行当前中间件中的process_response方法,倒叙执行之前的中间中process_response方法。



2.process_response(self, request, response)

执行时间:视图函数之后

参数:

​    request   —— 》 和视图函数中是同一个request对象

​    response   ——》  返回给浏览器响应对象

执行顺序:按照注册的顺序  倒叙执行

返回值:

​        HttpResponse:必须返回response对象



3.process_view(self, request, view_func, view_args, view_kwargs)

执行时间:视图函数之前,process_request之后

参数:

​        request   —— 》 和视图函数中是同一个request对象

​        view_func  ——》 视图函数

​        view_args   ——》 视图函数的位置参数

​        view_kwargs  ——》 视图函数的关键字参数

执行顺序:按照注册的顺序  顺序执行

返回值:

​        None : 正常流程

​        HttpResponse: 后面的中间的process_view、视图函数都不执行,直接执行最后一个中间件中的process_response方法,倒叙执行之前的中间中process_response方法。



4.process_exception(self, request, exception)

执行时间(触发条件):视图层面有错时才执行

参数:

​        request   —— 》 和视图函数中是同一个request对象

​        exception   ——》 错误对象

执行顺序:按照注册的顺序  倒叙执行

返回值:

​        None : 交给下一个中间件取处理异常,都没有处理交由django处理异常

​        HttpResponse: 后面的中间的process_exception不执行,直接执行最后一个中间件中的process_response方法,倒叙执行之前的中间中process_response方法。



5.process_template_response(self,request,response)

执行时间(触发条件):视图返回的是一个templateResponse对象

参数:

​    request   —— 》 和视图函数中是同一个request对象

​    response   ——》  templateResponse对象

执行顺序:按照注册的顺序  倒叙执行

返回值:

​        HttpResponse:必须返回response对象

![img](https://images2018.cnblogs.com/blog/867021/201804/867021-20180409214433968-2137571775.png)

![img](https://images2018.cnblogs.com/blog/1168194/201807/1168194-20180719084357413-1778333372.png)

 

以上是关于doraemon的python django的中间件(国庆大更新)的主要内容,如果未能解决你的问题,请参考以下文章

doraemon的python cookie和session(国庆大更新)

doraemon的python form组件(国庆大更新)

doraemon的python csrf校验(国庆大更新)

doraemon的python centos的入门

doraemon的python Flask框架 路由和配置

doraemon的python 进程模块和线程