中间件的使用

中间件是全局使用

工厂函数定义中间件

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)

相关推荐
虾条_花吹雪1 天前
Using Spring for Apache Pulsar:Message Production
java·ai·中间件
痴人说梦梦中人2 天前
Gin框架统一响应与中间件机制学习笔记
网络安全·中间件·go·gin
code喵喵4 天前
docker-compose安装常用中间件
docker·中间件·容器
咚咚?4 天前
docker 启动中间件
docker·中间件·容器
重生之后端学习5 天前
day08-Elasticsearch
后端·elasticsearch·spring cloud·中间件·全文检索·jenkins
云资源服务商5 天前
探秘阿里云消息队列:解锁分布式系统的异步通信奥秘
阿里云·中间件·云计算
伍哥的传说7 天前
H3初识——入门介绍之常用中间件
前端·javascript·react.js·中间件·前端框架·node.js·ecmascript
失败又激情的man8 天前
Scrapy进阶封装(第四阶段:中间件设置,动态UA,ip代理池)
爬虫·scrapy·中间件
亲爱的非洲野猪8 天前
Kafka消息积压的多维度解决方案:超越简单扩容的完整策略
java·分布式·中间件·kafka
摘星编程9 天前
深入理解责任链模式:从HTTP中间件到异常处理的实战应用
http·设计模式·中间件·责任链模式·实战应用