Django的中间件 与Python的装饰器

一、原理
1.装饰器是Python的一种语法应用,利用闭包的原理去更改一个函数的功能,即让一个函数执行之前先到另外一个函数中执行其他需求语句,在执行该函数。在开发项目中,通常使用装饰器来管理权限,登录等等,配上Python的 @ 语法糖,轻松实现代码的重用性和低耦合性。
2.而Django中的中间件是利用面向切面的编程思想,对Django服务器访问过程中间进行干预。
是一个轻量级、底层的插件系统,可以介入Django的请求和响应处理过程,修改Django的输入或输出
激活:添加到Django配置文件中的MIDD

LEWARE_CLASSES元组中
每个中间件组件是一个独立的Python类,可以定义下面方法中的一个或多个
init :无需任何参数,服务器响应第一个请求的时候调用一次,用于确定是否启用当前中间件
process_request(request):执行视图之前被调用,在每个请求上调用,返回None或HttpResponse对象
process_view(request, view_func, view_args, view_kwargs):调用视图之前被调用,在每个请求上调用,返回None或HttpResponse对象
process_template_response(request, response):在视图刚好执行完毕之后被调用,在每个请求上调用,返回实现了render方法的响应对象
process_response(request, response):所有响应返回浏览器之前被调用,在每个请求上调用,返回HttpResponse对象
process_exception(request,response,exception):当视图抛出异常时调用,在每个请求上调用,返回一个HttpResponse对象使用中间件,可以干扰整个处理过程,每次请求中都会执行中间件的这个方法

二、联系及区别
联系:中间件是利用装饰器原理实现的,具体通过两个函数嵌套、或通过改写类中的__ call __方法实现一个装饰器功能。使之过来的Request的请求,先到call方法中进行处理。配置中间件,实现过程干预。
区别:一个是Python的语法功能,一个是Django 框架自带的轻量级插件系统。

选自:https://www.cnblogs.com/SutCoderHang/p/9982817.html

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 很久没有开口说整串整串的英语句子,一直以为自己的功底还在,但是这两天的练习真的大大的打击了我。在模仿的过程中,最大...
    波西米娅阅读 1,247评论 0 0
  • (20160804,南宁,台风雨) 昨天接到贺总电话,说今晚在南宁继续进行试菜,我兴奋至极,表示从现在开始禁食,...
    南宁唐方阅读 2,586评论 2 1
  • 穿过密密麻麻的雨 远处的街灯 长长的睫毛扇动 一辆车行驶在氤氲中 水花溅处 黑头发甩起湿润 回眸却等了很久 雨夜似...
    钟老师阅读与写作阅读 1,747评论 0 5
  • 如标题,今天要去加班,明天也要加班,所谓程序员就没有不加班的吧,忧伤。 原本计划今日去租车开着玩玩的,也泡汤了。
    走边关的蒲公英阅读 1,324评论 0 0

友情链接更多精彩内容