zoukankan      html  css  js  c++  java
  • 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)
  • 相关阅读:
    azure备份虚拟机
    本地git部署web连接azure的git存储库
    dnsmasq服务的安装与配置
    hadoop错误- slave节点无法启动data node数据节点进程,但是master节点datanode正常启动
    hadoop错误--转发-hadoop启动遇到的各种问题
    hadoop错误--集群启动master时namenode进程无法启动
    c++的字节对齐
    fstream 和 iostream
    C语言的声明的优先级规则
    齐次矩阵
  • 原文地址:https://www.cnblogs.com/doraemon548542/p/11638584.html
Copyright © 2011-2022 走看看