中间件的使用

中间件是全局使用

工厂函数定义中间件

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)

相关推荐
weixin_4569042714 小时前
跨域(CORS)和缓存中间件(Redis)深度解析
redis·缓存·中间件
优秀的老黄3 天前
Docker部署RabbitMQ
linux·运维·docker·中间件·容器·centos·rabbitmq
Thuni_soft5 天前
华宇TAS应用中间件与瀚高股份两款产品完成兼容互认证
中间件
蒋星熠5 天前
中间件架构设计与实践:构建高性能分布式系统的核心基石
开发语言·数据库·分布式·python·中间件·性能优化·硬件工程
jc06206 天前
4.1-中间件之Redis
数据库·redis·中间件
lingggggaaaa6 天前
小迪安全v2023学习笔记(八十讲)—— 中间件安全&WPS分析&Weblogic&Jenkins&Jetty&CVE
笔记·学习·安全·web安全·网络安全·中间件·wps
MySGDLife6 天前
中间件八股
中间件
Mr_hwt_1237 天前
基于MyCat 中间件实现mysql集群读写分离与从库负载均衡教程(详细案例教程)
数据库·mysql·中间件·mysql集群
echoyu.7 天前
消息队列-初识kafka
java·分布式·后端·spring cloud·中间件·架构·kafka
Ray Song7 天前
【FastDDS】XML profiles
xml·中间件·自动驾驶·dds·fastdds