• 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. 返回值
                    必须要有返回值,返回要是 响应对象

    中间件的运行流程图:

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

     

  • 相关阅读:
    python笔记-datetime-logging
    python笔记-json-base64-hashlib
    python笔记-redis数据库
    python笔记-mysql命令使用示例(使用pymysql执行)
    python笔记-python程序中操作mysql数据库
    python笔记-mysql约束条件与表关系
    python笔记-mysql查询
    python笔记-mysql基本命令
    Vue移动端项目模板h5
    基于环信SDK的IM即时通讯填坑之路(vue)
  • 原文地址:https://www.cnblogs.com/dingyutao/p/9230216.html
Copyright © 2020-2023  润新知