中间件

Posted perfey

tags:

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

中间件

1. 什么是中间件?
    中间件是一个类。用来处理Django的请求和响应的框架级别的钩子。
    中间件中定义方法。
2. 五个方法:(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. process_request
        1. 执行时间
            在视图函数之前执行
        2. 参数
            request 和视图中的request是同一个
        3. 返回值
            返回None  
            返回response对象   
                不执行后面中间的process_request方法和视图
                直接执行当前值中间件的process_response方法
        4. 执行顺序
            按照注册的顺序执行 
            
            
    2. process_response	
        1. 执行时间	
            在视图函数之后执行
        2. request, response
            request 和视图中的request是同一个
            response 返回的response对象
        3. 返回值
            返回response对象
        4. 执行顺序
            按照注册的倒序执行
            
    3. process_view
        1. 执行时间
            在视图函数之前,process_request之后执行
        2. 参数
            view_func  将要执行的视图函数
            view_args  视图函数的可变长位置参数
            view_kwargs	视图函数的可变长关键字参数
        3. 返回值
            返回  None  正常执行 
            返回  response对象   不执行后面的process_view和视图,直接执行所有中间件的process_response方法
            
        4。执行顺序
            按照注册的顺序执行
    
    4. process_exception(有条件触发:有错误才执行)
        1. 执行时间
            在视图函数之后,process_response之前执行
        2. 参数
            exception  错误对象
        3. 返回值
            返回  None  不对错误进行处理,交给下一个中间件进行处理
            返回  response对象  下一个中间的process_exception不执行,直接执行所有中间件的process_response方法
        4. 执行顺序
            按照注册的倒序执行
    5. process_template_response(条件触发:视图返回的response有render方法)
        1. 执行时间
            在视图函数之后,process_response之前执行
        2. 参数
        3. 返回值
            返回 response对象
        4. 执行顺序
            按照注册的倒序执行,执行完所有的process_template_response方法后执行response.render方法

以上是关于中间件的主要内容,如果未能解决你的问题,请参考以下文章

Sublime Text3自定义代码片段

无法更新 View Pager 中的中间片段。

Android - 从堆栈中间删除特定片段不起作用

从没有中间转换变量的片段中观察 ViewModel LiveData

如何将数据从顶点着色器传递到片段着色器,中间有着色器[重复]

如何定义对话框片段的重力?