• 中间件的使用


    中间件是全局使用

    工厂函数定义中间件

    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)
  • 相关阅读:
    乐观事务和悲观事务
    C++问题:在共享库 clang 中创建入口点时未定义的引用
    力扣 轮转数组三段逆置法和三段拷贝法(C语言)
    YAMLException : java.nio.charset.MalformedInputException : Input length = 1
    【JavaWeb的从0到1构建知识体系(一)】Java网络编程
    多个jdk版本怎么使用指定的jdk去跑java程序?
    java IO流进阶操作
    华为新品Mate50将搭载北三短报文通信功能?这项技术是何方神圣
    对齐PyTorch,一文详解OneFlow的DataLoader实现
    利用Git进行协作
  • 原文地址:https://blog.csdn.net/2303_77327646/article/details/138474127