一. ⾃定义中间件

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】自定义中间件相关推荐

  1. django 自定义中间件实现访问频率限制和IP禁用

    由于Http请求是无状态的,服务端能直知道是那个客户端的访问,所以,我们可以利用session技术,记住每个用户访问的状态数据. 在用户发起请求后,记录用户IP, 同时进行每次访问时间的统计,实现客户 ...

  2. Django自定义一个简单的中间件,并使用此中间件

    1.在最近做的项目中,需要每个页面访问的时候判断是否登录,没登录的话就跳转到登录页面,因此抽出个公共方法,并自定义个中间件是很有必要的,这样就可以用注解方式去使用这个自定义的中间件,就如Django自 ...

  3. {Django基础九之中间件} 一 前戏 二 中间件介绍 三 自定义中间件 四 中间件的执行流程 五 中间件版登陆认证...

    Django基础九之中间件 本节目录 一 前戏 二 中间件介绍 三 自定义中间件 四 中间件的执行流程 五 中间件版登陆认证 六 xxx 七 xxx 八 xxx 一 前戏 我们在前面的课程中已经学会了 ...

  4. python 全栈开发,Day87(ajax登录示例,CSRF跨站请求伪造,Django的中间件,自定义分页)...

    python 全栈开发,Day87(ajax登录示例,CSRF跨站请求伪造,Django的中间件,自定义分页) 一.ajax登录示例 新建项目login_ajax 修改urls.py,增加路径 fro ...

  5. Django之中间件

    一.CBV加装饰器 第一种 @method_decorator(装饰器) 加在get上第二种 @method_decorator(login_auth,name='get') 加在类上第三种 @met ...

  6. Django的中间件

    Django的中间件 目录 中间件介绍 什么是中间件? 自定义中间件 自定义一个中间件示例 process_request process_response process_view process_ ...

  7. Django组件-中间件

    中间件是介于request与response处理之间的一道处理过程,相对比较轻量级,并且在全局上改变django的输入与输出.因为改变的是全局,所以需要谨慎使用,用不好会影响到性能. Django默认 ...

  8. Django (八) 中间件验证码富文本缓存

    中间件&验证码&富文本&缓存 1. 中间件&AOP 中间件:是一个轻量级的,底层的插件,可以介入Django的请求和响应过程(面向切面编程) ​ 中间件的本质就是一个p ...

  9. Django 组件- 中间件

    11.1 中间件 一.中间件的概念 中间件顾名思义,是介于request与response处理之间的一道处理过程,相对比较轻量级,并且在全局上改变django的输入与输出.因为改变的是全局,所以需要谨 ...

  10. Django之中间件,csrf跨站伪造请求,auth认证模块

    Django请求生命周期 django的中间件 django的中间件相当于保安,请求的时候要经过django的中间件才能连接django的后端 能用来干什么:能够做网站的全局身份认证,访问频率,权限认 ...

最新文章

  1. sql server 2005分页存储过程和sql server 2000分页存储过程(摘)
  2. .net core将URL请求格式化为XML或JSON(网站动态生成sitemap.xml)
  3. 31.错误处理.rs
  4. 多少秒算长镜头_下中国象棋,能算多少步才算高手?
  5. Android FTP Server 1
  6. 编译html成qch,在应用程序编译过程中运行qcollectiongenerator
  7. 大数据之-Hadoop3.x_MapReduce工作流程---大数据之hadoop3.x工作笔记0109
  8. TOMCAT启动提示NB: JAVA_HOME should point to a JDK not a JRE解决
  9. Java开发从零开始!java游戏服务器开发教程
  10. 在ubuntu16.04下利用cmake+VC code,断点调试
  11. Shadow SSDT
  12. Rimworld Mod制作教程2 创建数据定义
  13. word文档怎么删除多余的空白页?
  14. android修改屏幕大小设置,android mediaplayer 视频修改视频大小 (屏幕尺寸mediaPlayer =......
  15. 文字和图片,图片和图片底部对齐
  16. 《东周列国志》第五十七回 娶夏姬巫臣逃晋 围下宫程婴匿孤
  17. jenkins 一键式部署的工具
  18. 小乌龟html5小游戏,晨会互动小游戏之《抓乌龟》
  19. 第5章第28节:演讲者放映、观众自行浏览和在展台浏览 [PowerPoint精美幻灯片实战教程]
  20. DirectX11 With Windows SDK--36 延迟渲染基础

热门文章

  1. 电路计算机辅助设计上海电力学院,上海电力学院电路计算机辅助设计二端口电路的设计.doc...
  2. python 数学符号读法大全_math_数字与数学 | Numeric Mathematical_Python_参考手册_非常教程...
  3. xml配置linux启动脚本,linux中利用Shell脚本实现自动安装部署weblogic服务
  4. 收藏:通信网络基础知识
  5. 微软成功测试氢燃料电池,为数据中心连续供电 48 小时
  6. 回顾2019年5个重大宕机事件
  7. 数据中心防火要把“十关”
  8. 6.7级地震!北海道数据中心陷最长停电危机!
  9. 鸿蒙安卓哪个app好,可以放下对华为鸿蒙的担忧了,操作和EMUI相似,能兼容安卓APP - 区块网...
  10. 成功解决import win32api, sys, osImportError: DLL load failed: 找不到指定的模块。