加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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

发布时间:2020-12-20 10:22:10 所属栏目:Python 来源:网络整理
导读:# ## 11.13 中间件 中间件的定义:中间件是处理django的请求和相应的框架级别的钩子,本质上就是一个类中间件可以定义为五个方法: - process_request(self,request) - process_view(self,request,view_func,view_args,view_kwargs) - process_template_resp
### 11.13  中间件

中间件的定义:

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

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

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

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



1.process_request(self,request)

执行时间:视图函数之前

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

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

返回值:

?        None : 正常流程

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



2.process_response(self,response)

执行时间:视图函数之后

参数:

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

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

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

返回值:

?        HttpResponse:必须返回response对象



3.process_view(self,view_kwargs)

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

参数:

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

?        view_func  ——》 视图函数

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

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

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

返回值:

?        None : 正常流程

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



4.process_exception(self,exception)

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

参数:

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

?        exception   ——》 错误对象

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

返回值:

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

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



5.process_template_response(self,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)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读