Django中间件

官方的说法:中间件是一个用来处理Django的请求和响应的框架级别的钩子。

它是一个轻量、低级别的插件系统,用于在全局范围内改变Django的输入和输出。每个中间件组件都负责做一些特定的功能。

中间件可以定义五个方法,

分别是:(主要的是process_request和process_response)

  • 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)

如何自定义中间件:

1. 按照格式要求写一个类
2. 把我们写好的类在settings.py注册到MIDDLEWARE配置项的列表中

常用中间件的执行顺序:

1. process_request(self,request)
            1. 何时执行
                在urls.py之前执行
            2. 执行的顺序
                按照在列表中注册的顺序依次执行
            3. 返回值
                1. 返回None, 不错任何处理直接进行下一步
                2. 返回响应对象, 直接跳出(后续中间件的process_request、不执行urls.py和views.py)返回响应
                
        2. process_view(self, request, view_func, view_args, view_kwargs)
            1. 执行时间:
                在urls.py之后在执行真正的视图函数之前
            2. 执行顺序
                1. 按照在列表中注册的顺序依次执行
                
            3. 返回值
                1. 返回None, 放行
                2. 返回响应对象,就直接跳出,倒序依次执行所有中间件的process_response方法
            
        3. process_template_response(self,request,response)
            
        4. process_exception(self, request, exception)
            
        
        5. process_response(self, request, response)
            1. 何时执行
                在views.py返回响应对象之后执行
                
            2. 执行的顺序
                按照在列表中注册的倒序依次执行
                
            3. 返回值
                必须要有返回值,返回要是 响应对象

中间件的运行流程图:

 

下面这个是总的流程:面试常考无比掌握哦

 

 

 

posted @ 2018-06-26 17:25  似水年华梦  阅读(138)  评论(0编辑  收藏  举报