中间件的使用

中间件是全局使用

工厂函数定义中间件

middleware.py

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

setings.py中注册中间件

python 复制代码
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',
]
类定义中间件
python 复制代码
# 类定义中间件
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中注册中间件

python 复制代码
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)

相关推荐
SunnyRivers7 天前
LangChain中间件详解
中间件·langchain
金刚猿7 天前
06_虚拟机中间件部署_xxl-job 部署
中间件·xxl-job·xxl-job-admin
Loo国昌8 天前
【AI应用开发实战】Guardrail风险控制中间件:Agent系统的安全防线
人工智能·python·安全·自然语言处理·中间件·prompt
键盘鼓手苏苏9 天前
Flutter for OpenHarmony: Flutter 三方库 ntp 精准同步鸿蒙设备系统时间(分布式协同授时利器)
android·分布式·算法·flutter·华为·中间件·harmonyos
Coder_Boy_9 天前
Java后端核心技术体系全解析(个人总结)
java·开发语言·spring boot·分布式·spring cloud·中间件
CN-David9 天前
CentOS搭建Mycat中间件
linux·mysql·中间件·centos·mariadb
三水不滴10 天前
消息队列消费性能优化:批量消费 + 手动 ACK 提升吞吐量
经验分享·笔记·中间件·性能优化
nix.gnehc10 天前
Go进阶攻坚+专家深耕级学习清单|聚焦高并发、高性能中间件/底层框架开发(Java开发者专属)
学习·中间件·golang
金刚猿11 天前
05_虚拟机中间件部署_ubuntu 系统 安装 Redis 7.0.15
redis·ubuntu·中间件
GEM的左耳返11 天前
Java面试深度剖析:从JVM到云原生的技术演进
jvm·spring boot·云原生·中间件·java面试·分布式架构·ai技术