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

  • 相关阅读:
    3、第3课CSS块级、行内元素、绝对定位、相对定位、固定位置20150922
    Easyui 正则表达式
    struts 标签
    源码详解Java的反射机制
    MyEclipse8.6安装 spket 插件
    有些路,只能一个人走
    HG8245获取超级管理员(telecomadmin)密码的方法
    easyui doc
    oracle建立自动增长字段
    Java实现二维码QRCode的编码和解码
  • 原文地址:https://www.cnblogs.com/wt7018/p/11298744.html
Copyright © 2011-2022 走看看