• 中间件的使用


    中间件是全局使用

    工厂函数定义中间件

    middleware.py

    1. # 工厂函数的中间件
    2. def simple_middleware(get_response):
    3. def middleware(request):
    4. print("在视图函数处理之前执行、、、、、")
    5. response = get_response(request)
    6. print("在视图函数处理之后执行。。。。。")
    7. return response
    8. return middleware

    setings.py中注册中间件

    1. MIDDLEWARE = [
    2. 'django.middleware.security.SecurityMiddleware',
    3. 'django.contrib.sessions.middleware.SessionMiddleware',
    4. 'django.middleware.common.CommonMiddleware',
    5. # 'django.middleware.csrf.CsrfViewMiddleware',
    6. 'django.contrib.auth.middleware.AuthenticationMiddleware',
    7. 'django.contrib.messages.middleware.MessageMiddleware',
    8. 'django.middleware.clickjacking.XFrameOptionsMiddleware',
    9. 'the_15.middleware.simple_middleware',
    10. ]
    类定义中间件
    1. # 类定义中间件
    2. from django.utils.deprecation import MiddlewareMixin
    3. class Mwi(MiddlewareMixin):
    4. def process_request(self, request):
    5. """
    6. 如果没有返回值或者返回值为 None 就会继续执行视图函数
    7. 如果有返回值就不会执行视图函数中的内容,直接返回值,
    8. """
    9. print("process_request 在视图函数之前执行、、、、、")
    10. pass
    11. def process_View(self, request, view_func, view_args, view_kwargs):
    12. print('process_View 正在执行中')
    13. pass
    14. def process_response(self, request, response):
    15. """
    16. 一定要有返回值
    17. """
    18. print("process_response 在视图函数之后执行、、、、、")
    19. return response

    setings.py中注册中间件 

    1. MIDDLEWARE = [
    2. 'django.middleware.security.SecurityMiddleware',
    3. 'django.contrib.sessions.middleware.SessionMiddleware',
    4. 'django.middleware.common.CommonMiddleware',
    5. # 'django.middleware.csrf.CsrfViewMiddleware',
    6. 'django.contrib.auth.middleware.AuthenticationMiddleware',
    7. 'django.contrib.messages.middleware.MessageMiddleware',
    8. 'django.middleware.clickjacking.XFrameOptionsMiddleware',
    9. # 'the_15.middleware.simple_middleware',
    10. 'the_15.middleware.Mwi',
    11. ]

    执行顺序

    中间件的属性与方法 
    get_response
    process_request(self, request)
    process_view(self, request, view_func, view_args, view_kwargs)
    process_response(self, request, response)
    process_template_response(self, request, response)
  • 相关阅读:
    nginx,fastdfs 配置搭建文件服务器
    关于 Nginx 0day 漏洞,需要采取哪些措施?
    SpringBoot打war包Tomcat部署——打jar包命令运行
    使用 Wireshark 实现 ARP 嗅探监听网络
    MySQL语法笔记(自用)
    MATLAB | 全网唯一,三元相映射图绘制(三元相分级统计地图)
    mysql基本操作1
    Python数据类型:列表的魔法世界
    TCP协议的三次握手及其原因
    《QT从基础到进阶·三十三》QT插件开发QtPlugin
  • 原文地址:https://blog.csdn.net/2303_77327646/article/details/138474127