浅谈Django的中间件与Python的装饰器

浅谈Django的中间件 与Python的装饰器

1、原理

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方法的响应对象spa

  • process_response(request, response):全部响应返回浏览器以前被调用,在每一个请求上调用,返回HttpResponse对象插件

  • process_exception(request,response,exception):当视图抛出异常时调用,在每一个请求上调用,返回一个HttpResponse对象使用中间件,能够干扰整个处理过程,每次请求中都会执行中间件的这个方法中间件

2、联系及区别

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