• 中间件


    一. 中间件的概念
        中间件顾名思义,是介于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中出现错误时

     

     





  • 相关阅读:
    Maven插件系列之spring-boot-maven-plugin
    Java中getResourceAsStream的用法
    【redis】【linux】-bash: redis-cli: 未找到命令
    【bat】杀死指定端口
    【bat】查看端口占用情况
    【java】【springboot】nohup: 无法运行命令'java': 没有那个文件或目录
    【springboot】启动指定内存大小
    【java】【spring】源码分析,@AliasFor互为别名
    【idea】设置安装插件位置
    【记录】【springboot】java.lang.NoClassDefFoundError: org/w3c/dom/ElementTraversal解决
  • 原文地址:https://www.cnblogs.com/shanghongyun/p/9878981.html
Copyright © 2020-2023  润新知