zoukankan      html  css  js  c++  java
  • 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. 返回值
                    必须要有返回值,返回要是 响应对象

    中间件的运行流程图:

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

     

  • 相关阅读:
    django页面分类和继承
    django前端从数据库获取请求参数
    pycharm配置django工程
    django 应用各个py文件代码
    CF. 1428G2. Lucky Numbers(背包DP 二进制优化 贪心)
    HDU. 6566. The Hanged Man(树形背包DP DFS序 重链剖分)
    小米邀请赛 决赛. B. Rikka with Maximum Segment Sum(分治 决策单调性)
    区间树 学习笔记
    CF GYM. 102861M. Machine Gun(主席树)
    2016-2017 ACM-ICPC East Central North America Regional Contest (ECNA 2016) (B, D, G, H)
  • 原文地址:https://www.cnblogs.com/dingyutao/p/9230216.html
Copyright © 2011-2022 走看看