zoukankan      html  css  js  c++  java
  • Django 中间件

    一、定义

    中间件在wsgi和urls之间

    二、配置

    1、创建.py文件

    2、定义中间件

    from django.utils.deprecation import MiddlewareMixin
    
    class Md1(MiddlewareMixin):

    3、setting.py文件中添加自定义的中间件

    MIDDLEWARE = [
        'django.middleware.security.SecurityMiddleware',
        'django.contrib.sessions.middleware.SessionMiddleware',
        'django.middleware.common.CommonMiddleware',
        'django.middleware.csrf.CsrfViewMiddleware',
        'django.contrib.auth.middleware.AuthenticationMiddleware',
        'django.contrib.messages.middleware.MessageMiddleware',
        'django.middleware.clickjacking.XFrameOptionsMiddleware',
        'my_middleware.Md1',
        'my_middleware.Md2',
    ]

    三、中间件的方法

    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)

    process_request 和 process_response最为重要

    process_view其次

    其它了解即可

    1、process_request

    执行顺序:注册顺序

    何时执行:wsgi之后

    返回值:

    None,继续执行后续的中间件的process_request方法

    返回response , 不执行后续的中间件的process_request方法

    2、process_response

    执行顺序:注册顺序倒序

    何时执行:请求响应的时候

    返回值: 必须要有返回值

    返回原来的响应

    return response

    3、process_view

    执行顺序:注册顺序

    何时执行:urls.py之后,views.py之前

    返回值:
    返回None,继续执行后续的中间件的process_view方法
    返回response,不执行后续的中间件的process_view方法,它将执行中间件的process_response方法并将应用到该HttpResponse并返回结果

    4、process_exception

    执行顺序:注册倒序

    何时执行:views中有异常抛出

    返回值:

    返回None,继续执行后续的中间件的process_exception方法

    返回response, 它将执行中间件的process_response方法并将应用到该HttpResponse并返回结果

    5、process_template_response

    执行顺序:注册倒序

    何时执行:视图函数中有render(),视图函数执行完后,立刻执行

    返回值:

    返回None,继续执行后续中间件的process_exception

    返回response,

    四、总结

    中间件5个方法的顺序

    1、process_request

    2、process_view

    3、process_exception   有异常

    4、process_template_response   render()方法

    5、process_response 必须要有返回值

  • 相关阅读:
    SpringMVC初识视图解析器
    初识SpringMVC
    C++ 虚函数表
    C++ 纯虚函数 + 抽象类
    C++ 虚析构函数
    C++ 虚函数
    C++ 多态
    leetcode
    leetcode
    leetcode 10.正则表达式匹配
  • 原文地址:https://www.cnblogs.com/wt7018/p/11298744.html
Copyright © 2011-2022 走看看