中间件的使用

中间件是全局使用

工厂函数定义中间件

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)

相关推荐
车载中间件通信8 分钟前
[TC8测试]TCP_FLAGS_PROCESSING_06
数据库·网络协议·tcp/ip·中间件·tc8
kingx31 天前
网络安全事件应急响应:X集团 WebServer 入侵溯源与处置
中间件·web·应急响应·取证·恶意样本
特立独行的猫a2 天前
ROS 2 主流DDS中间件入门:Cyclone DDS 与 Fast DDS 完全指南
中间件·ros2·dds·fast dds·cyclone dds
小易老师AI实战2 天前
用中间件把任务规划嵌进智能体循环
中间件·状态管理·智能体·工具调用·langgraph·任务规划
绿蕉3 天前
从硬件内卷到“中间件荒“——仿真工具、开发接口、开源生态
中间件·机器人
小易老师AI实战3 天前
LangGraph Agent 任务规划中间件:TodoListMiddleware 原理解析
中间件·agent·langgraph·任务规划·大模型智能体
eleven_4u4 天前
QPS如何计算,如何部署架构
java·linux·运维·jvm·中间件
喵了几个咪5 天前
GoWind ShortPlay 拆解:Ent privacy/viewer 多租户隔离——从中间件到 SQL 的零信任链
sql·中间件·信任链
ctlover6 天前
langchain 中间件
中间件·langchain·1024程序员节
宝贝儿好8 天前
【LLM】第十一章:Agent中间件2:ModelCallLimitMiddleware
中间件