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

    一. 中间件的概念
        中间件顾名思义,是介于request与response处理之间的一道处理过程,相对比较轻量级,并且
        在全局上改变django的输入与输出。因为改变的是全局,所以需要谨慎实用,用不好会影响到性能。
    .Django默认的中间件
        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',
        ]
        每一个中间件都有具体的功能
    .自定义中间件
        1.中间件一共有四个方法
            process_request
            process_view
            process_exception
            process_response

    2.请求发送响应流程图

        3.当用户发起请求的时候会依次经过所有的中间件,依次经过中间件中的process_request函数,最后到达视图函数, 中视图函数处理完成后,再依次穿过中间件中的process_response,最后由wsgi.py对响应进行封装,发送给浏器.

    1. 自定义中间件

    process_request,process_response方法

     

    (1)自定义的类必须继承MiddlewareMixin,需要导入

    from django.utils.deprecation import MiddlewareMixin

    settings中:

    在视图中:

    在自定义的中间件中:

    结果:

     

    :如果请求在中间件1的process_request中被return,将会直接走中间件1的process_response,然后返回

    :

     

    结果:

     

    流程图如下:

    也可以在返回的途中被某个中间件的process_response偷梁换柱
    :

    结果为:

     

    process_view方法

    结果:

    流程图如下:

     

    中间件可以用来提前调用视图函数

    :

     

    结果:

     

    流程图如下:

     

    process_exception

     

    结果:

    :在以上的代码中,process_exception并不会执行,只有当views出现错误是时,才会执行
    :当views中出现错误时

     

     





  • 相关阅读:
    参数探测(Parameter Sniffing)与影响计划重用的SET选项
    The workbook can not be opened
    参数Sniffing问题
    Unable to connect SQL Server
    正则|和[]的区别
    form的target捕捉不到动态写入name的iframe
    windows下git bash乱码问题
    ie6,7下textarea等上方空白
    根据字数截取字符串,不能截断url
    浏览器hack
  • 原文地址:https://www.cnblogs.com/shanghongyun/p/9878981.html
Copyright © 2011-2022 走看看