当前位置: 首页 > news >正文

Django中间件

Django中间件的定义

Django中间件是处理请求和响应的轻量级插件系统,位于Django请求/响应处理流程的全局层面。中间件在视图函数执行前后介入,可修改请求(HttpRequest)或响应(HttpResponse),实现全局逻辑如身份验证、日志记录或跨域处理。

第一步:创建普通类,继承

class MyMid01(MiddlewareMixin): pass

第二步:在settings.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', 'app.MyMiddleware01.MyMid01' ]

第三步:设计中间件逻辑

from django.utils.deprecation import MiddlewareMixin class MyMid01(MiddlewareMixin): """ process_request 执行时间:在视图函数之前执行 执行顺序:与settings.py中的配置顺序保持一致 参数:request 与视图函数中的request是同一个对象 返回值:没有返回值,代表正常执行下一步 """ def process_request(self, request): print("中间件01中的请求执行:process_request") """ process_response 执行时间:在视图函数之后执行 执行顺序:与settings.py中的配置顺序相反 参数:request,response 与视图函数中的request、response是同一个对象 返回值: 没有返回值,报错 返回HttpResponse """ def process_response(self, request, response): print("中间件01中的响应执行:process_response") return response """ process_view 执行时间:在视图函数之后执行 执行顺序:与settings.py中的配置顺序保持一致 参数: request:与视图函数中的request是同一个对象 callback:要执行的视图函数 callback_args:视图函数中的位置参数 callback_kwargs:视图函数中的关键字参数 返回值: 没有返回值,正常进行下一步 """ def process_view(self, request, callback, callback_args, callback_kwargs): print("中间件01中的view执行:process_view") #print(callback) """ process_template_response 触发条件:当视图函数的response需要调用render 执行时间:在视图函数之后、process_response执行之前 执行顺序:与settings.py中的配置顺序相反 参数: request:与视图函数中的request是同一个对象 response:与视图函数中的response是同一个对象 返回值: 没有返回值,报错 返回 response """ def process_template_response(self,request,response): print("中间件01中的template执行:process_template_response") return response """ process_exception 触发条件:当视图函数中有异常发生 执行时间:在视图函数之后、process_response执行之前 执行顺序:与settings.py中的配置顺序相反 参数: request:与视图函数中的request是同一个对象 exception: 返回值: 没有返回值,正常进行下一步 """ def process_exception(self, request, exception): print("中间件01中的process_exception执行:process_exception")
http://www.jsqmd.com/news/478733/

相关文章:

  • 解决brew安装慢问题
  • 我看见ta拿着枪指着我的头
  • 斯坦福 CS336 从零构建大模型 (2025 春) - 第四讲:专家混合模型(Mixture of Experts, MoE)
  • Claude code学习记录
  • 性价比高的律师营销机构有啥特色?这3点让你秒懂!
  • ITSM 实战:多门店报障如何做统一受理、派单和 SLA 升级,避免群里越报越乱
  • 我在凌晨醒来
  • 八大应用场景解析:企业如何利用AI重塑业务流程?
  • 任务书被导师打回两次后,我用了这个工具——5分钟写出他当场点头的版本!
  • SpringBoot如何调用节假日API
  • OpenClaw 的产品形态和运作原理
  • ABAQUS模拟Oxford Space Systems太阳能帆板展开与折叠过程:从完全展开状...
  • 第一章:人工智能的起源:达特茅斯之梦
  • SD 图生图模式
  • Hadoop 2.7.3 集群部署、配置与环境变量调优全流程总结
  • 面试常问:TCP相关(中级篇)问题原因即解决方案
  • Google 26NG SDE VO 三轮面经|真实全程复盘,避坑要点全整理
  • 商务请客,没带“名牌酒”怎么开场?这3句话,比砸钱更显品位
  • 如何在虚拟机部署单机rabbitmq 3.8.30
  • 399 元杀龙虾服务爆火!OpenClaw 养虾人连夜卸载,背后扎心风险深度拆解
  • 从构建到 IPA 保护,Flutter iOS 包如何做混淆与安全处理
  • 基于PLC级联Mach-Zehnder干涉仪的O波段400GHz平顶梳状滤波器设计
  • 数据结构初阶——二叉树之——堆的实现
  • Markdown编辑器语法
  • 量化策略样本内外划分_防止过拟合
  • Maven依赖下载网址
  • redis windows环境配置读写分离:一主一从 + Sentinel 完整实战
  • 开发智能体:PDF自动拆分为图片,生成小红书文案并自动发布
  • 解锁项目开发新范式,源码图纸库赋能全场景研发
  • TextPecker:强化学习破解中文文本渲染失真难题