中间件的使用

中间件是全局使用

工厂函数定义中间件

middleware.py

# 工厂函数的中间件
def simple_middleware(get_response):
    def middleware(request):
        print("在视图函数处理之前执行、、、、、")
        response = get_response(request)
        print("在视图函数处理之后执行。。。。。")
        return response
    return middleware

setings.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',
    'the_15.middleware.simple_middleware',
]
类定义中间件
# 类定义中间件
from django.utils.deprecation import MiddlewareMixin


class Mwi(MiddlewareMixin):
    def process_request(self, request):
        """
        如果没有返回值或者返回值为 None 就会继续执行视图函数
        如果有返回值就不会执行视图函数中的内容,直接返回值,
        """
        print("process_request 在视图函数之前执行、、、、、")
        pass

    def process_View(self, request, view_func, view_args, view_kwargs):
        print('process_View 正在执行中')
        pass

    def process_response(self, request, response):
        """
        一定要有返回值
        """
        print("process_response 在视图函数之后执行、、、、、")
        return response

setings.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',
    # 'the_15.middleware.simple_middleware',
    'the_15.middleware.Mwi',
]

执行顺序

中间件的属性与方法 
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)

相关推荐

  1. 爬虫scrapy中间使用

    2024-05-09 11:20:04       45 阅读
  2. golang 中间使用

    2024-05-09 11:20:04       55 阅读
  3. Python web框架fastapi中间使用

    2024-05-09 11:20:04       38 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-09 11:20:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-09 11:20:04       101 阅读
  3. 在Django里面运行非项目文件

    2024-05-09 11:20:04       82 阅读
  4. Python语言-面向对象

    2024-05-09 11:20:04       91 阅读

热门阅读

  1. React 学习-2

    2024-05-09 11:20:04       32 阅读
  2. React 第二十五章 React.memo

    2024-05-09 11:20:04       31 阅读
  3. MY SQL 实验四:

    2024-05-09 11:20:04       27 阅读
  4. LeetCode 每日一题 ---- 【2079.给植物浇水】

    2024-05-09 11:20:04       29 阅读
  5. 数据平台—邮件服务

    2024-05-09 11:20:04       38 阅读
  6. Linux源码包安装

    2024-05-09 11:20:04       28 阅读
  7. FFmpeg的GPU功能进行视频处理

    2024-05-09 11:20:04       30 阅读
  8. 一分钟get如何在NIBSC官网查询标准品明细

    2024-05-09 11:20:04       36 阅读
  9. C#读sqlite数据库

    2024-05-09 11:20:04       35 阅读
  10. (二)JVM实战——jvm实战之运行时数据区详解

    2024-05-09 11:20:04       38 阅读