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

  • 相关阅读:
    Android开发四大组件--Activity详解
    <base target="_blank"/>
    MVC EF异常-“序列化类型为 XX 的对象时检测到循环引用”
    错误:[将截断字符串或二进制数据。 语句已终止。]
    EasyUI queryParams属性 在请求远程数据同时给action方法传参
    存储区更新、插入或删除语句影响到了意外的行数(0)。实体在加载后可能被修改或删除。
    easyui DateTimeBox 取值
    [转载]再次谈谈easyui datagrid 的数据加载
    EasyUI datagrid 改变url属性 实现动态加载数据
    在js中获取easyui datagrid的数据
  • 原文地址:https://www.cnblogs.com/wt7018/p/11298744.html
Copyright © 2011-2022 走看看