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 必须要有返回值

  • 相关阅读:
    软件测试人员的年终绩效考核怎么应对
    收藏
    顶踩组件 前后两版
    订阅组件
    hdu 1963 Investment 完全背包
    hdu 4939 Stupid Tower Defense 动态规划
    hdu 4405 Aeroplane chess 动态规划
    cf 414B Mashmokh and ACM 动态规划
    BUPT 202 Chocolate Machine 动态规划
    hdu 3853 LOOPS 动态规划
  • 原文地址:https://www.cnblogs.com/wt7018/p/11298744.html
Copyright © 2011-2022 走看看