【django】自定义中间件
一. ⾃定义中间件
1、Django中的中间件是⼀个轻量级、底层的插件系统,可以介⼊Django的请求和响应处理过程,修改Django的输⼊或输出。中间件的设计为开发者提供了⼀种⽆侵⼊式的开发⽅式,增强了Django框架的健壮性。
2、我们可以使⽤中间件,在Django处理视图的不同阶段对输⼊或输出进⾏⼲预。
二. 实现步骤
1、项⽬根⽬录下创建python package
2、⾃定义⼀个python⽂件
from django.utils.deprecation import MiddlewareMixin
from django.utils.deprecation import MiddlewareMixinclass MyMiddle1(MiddlewareMixin):def process_request(self,request):print('处理请求中间件1')def process_response(self,request,response):print('处理响应中间件1')return responseclass MyMiddle2(MiddlewareMixin):def process_request(self, request):print('处理请求中间件2')def process_response(self, request, response):print('处理响应中间件2')return responseclass MyMiddle3(MiddlewareMixin):def process_request(self, request):print('处理请求中间件3')def process_response(self, request, response):print('处理响应中间件3')return response
3. settings⽂件中配置⾃定义中间件
4. 配置URL
urlpatterns = [path('register/',views.UserView.as_view()),
]
5. 创建视图
class UserView(View):def get(self,request):return HttpResponse('get请求')def post(self,request):return HttpResponse('post请求')def put(self,request):return HttpResponse('put请求')def patch(self,request):return HttpResponse('patch请求')def delete(self,request):return HttpResponse('delete请求')
6. 浏览器访问
http://127.0.0.1:8000/film/register/
7. 运⾏结果
三.多个中间件的执⾏顺序
1、在请求视图被处理前,中间件由上⾄下依次执⾏
2、在请求视图被处理后,中间件由下⾄上依次执⾏
四.其他内容
1、在每个中间件中添加以下代码:
from django.utils.deprecation import MiddlewareMixinclass MyMiddle1(MiddlewareMixin):def process_request(self,request):print('处理请求中间件1')def process_response(self,request,response):print('处理响应中间件1')return responsedef process_view(self, request, callback, callback_args, callback_kwargs):print('process_view-1')return Noneclass MyMiddle2(MiddlewareMixin):def process_request(self, request):print('处理请求中间件2')def process_response(self, request, response):print('处理响应中间件2')return responsedef process_view(self, request, callback, callback_args, callback_kwargs):print('process_view-2')return Noneclass MyMiddle3(MiddlewareMixin):def process_request(self, request):print('处理请求中间件3')def process_response(self, request, response):print('处理响应中间件3')return responsedef process_view(self, request, callback, callback_args, callback_kwargs):print('process_view-3')return None
执行结果:
2. 其他: views函数如果出现异常,返回会找exception⽅法,⼀级⼀级往上找,如果有处理返回,如果都没有处理就直接返回报错了。
【django】自定义中间件相关推荐
- django 自定义中间件实现访问频率限制和IP禁用
由于Http请求是无状态的,服务端能直知道是那个客户端的访问,所以,我们可以利用session技术,记住每个用户访问的状态数据. 在用户发起请求后,记录用户IP, 同时进行每次访问时间的统计,实现客户 ...
- Django自定义一个简单的中间件,并使用此中间件
1.在最近做的项目中,需要每个页面访问的时候判断是否登录,没登录的话就跳转到登录页面,因此抽出个公共方法,并自定义个中间件是很有必要的,这样就可以用注解方式去使用这个自定义的中间件,就如Django自 ...
- {Django基础九之中间件} 一 前戏 二 中间件介绍 三 自定义中间件 四 中间件的执行流程 五 中间件版登陆认证...
Django基础九之中间件 本节目录 一 前戏 二 中间件介绍 三 自定义中间件 四 中间件的执行流程 五 中间件版登陆认证 六 xxx 七 xxx 八 xxx 一 前戏 我们在前面的课程中已经学会了 ...
- python 全栈开发,Day87(ajax登录示例,CSRF跨站请求伪造,Django的中间件,自定义分页)...
python 全栈开发,Day87(ajax登录示例,CSRF跨站请求伪造,Django的中间件,自定义分页) 一.ajax登录示例 新建项目login_ajax 修改urls.py,增加路径 fro ...
- Django之中间件
一.CBV加装饰器 第一种 @method_decorator(装饰器) 加在get上第二种 @method_decorator(login_auth,name='get') 加在类上第三种 @met ...
- Django的中间件
Django的中间件 目录 中间件介绍 什么是中间件? 自定义中间件 自定义一个中间件示例 process_request process_response process_view process_ ...
- Django组件-中间件
中间件是介于request与response处理之间的一道处理过程,相对比较轻量级,并且在全局上改变django的输入与输出.因为改变的是全局,所以需要谨慎使用,用不好会影响到性能. Django默认 ...
- Django (八) 中间件验证码富文本缓存
中间件&验证码&富文本&缓存 1. 中间件&AOP 中间件:是一个轻量级的,底层的插件,可以介入Django的请求和响应过程(面向切面编程) 中间件的本质就是一个p ...
- Django 组件- 中间件
11.1 中间件 一.中间件的概念 中间件顾名思义,是介于request与response处理之间的一道处理过程,相对比较轻量级,并且在全局上改变django的输入与输出.因为改变的是全局,所以需要谨 ...
- Django之中间件,csrf跨站伪造请求,auth认证模块
Django请求生命周期 django的中间件 django的中间件相当于保安,请求的时候要经过django的中间件才能连接django的后端 能用来干什么:能够做网站的全局身份认证,访问频率,权限认 ...
最新文章
- sql server 2005分页存储过程和sql server 2000分页存储过程(摘)
- .net core将URL请求格式化为XML或JSON(网站动态生成sitemap.xml)
- 31.错误处理.rs
- 多少秒算长镜头_下中国象棋,能算多少步才算高手?
- Android FTP Server 1
- 编译html成qch,在应用程序编译过程中运行qcollectiongenerator
- 大数据之-Hadoop3.x_MapReduce工作流程---大数据之hadoop3.x工作笔记0109
- TOMCAT启动提示NB: JAVA_HOME should point to a JDK not a JRE解决
- Java开发从零开始!java游戏服务器开发教程
- 在ubuntu16.04下利用cmake+VC code,断点调试
- Shadow SSDT
- Rimworld Mod制作教程2 创建数据定义
- word文档怎么删除多余的空白页?
- android修改屏幕大小设置,android mediaplayer 视频修改视频大小 (屏幕尺寸mediaPlayer =......
- 文字和图片,图片和图片底部对齐
- 《东周列国志》第五十七回 娶夏姬巫臣逃晋 围下宫程婴匿孤
- jenkins 一键式部署的工具
- 小乌龟html5小游戏,晨会互动小游戏之《抓乌龟》
- 第5章第28节:演讲者放映、观众自行浏览和在展台浏览 [PowerPoint精美幻灯片实战教程]
- DirectX11 With Windows SDK--36 延迟渲染基础
热门文章
- 电路计算机辅助设计上海电力学院,上海电力学院电路计算机辅助设计二端口电路的设计.doc...
- python 数学符号读法大全_math_数字与数学 | Numeric Mathematical_Python_参考手册_非常教程...
- xml配置linux启动脚本,linux中利用Shell脚本实现自动安装部署weblogic服务
- 收藏:通信网络基础知识
- 微软成功测试氢燃料电池,为数据中心连续供电 48 小时
- 回顾2019年5个重大宕机事件
- 数据中心防火要把“十关”
- 6.7级地震!北海道数据中心陷最长停电危机!
- 鸿蒙安卓哪个app好,可以放下对华为鸿蒙的担忧了,操作和EMUI相似,能兼容安卓APP - 区块网...
- 成功解决import win32api, sys, osImportError: DLL load failed: 找不到指定的模块。