29
2020
09

Django中间件与装饰器的区别

Django中的中间件是一个轻量级、底层的插件系统,可以介入Django的请求和响应处理过程,修改Django的输入或输出。中间件的设计为开发者提供了一种无侵入式的开发方式,增强了Django框架的健壮性。


我们可以使用中间件,在Django处理视图的不同阶段对输入或输出进行干预。

作用:在视图函数执行之前先去进行处理,在视图函数执行之后再去进行收尾工作。 

在Django创建的时候,Django默认会给我们加6个中间件。 

“比如session和csrf,在视图函数执行前,我们就需要对它进行处理,可以使用装饰器来做,也可以使用中间件来处理。” 

区别:


装饰器:主要是作用域问题。如果给视图函数上面添加装饰器,它能够保证这个视图的方法在执行之前或执行之后被执行。但是它仅仅适用于哪些视图添加装饰器,那些视图会有这些作用。 

中间件:不会区分是哪个视图,所有的视图统统一视同仁,都会执行之前进行处理或请求之后进行处理。

如果是做一个普遍的处理,不去区分视图的话,就用middleware避免编写重复功能的代码


本质上就是一个自定义类,类中定义了几个方法,Django框架会在请求的特定的时间去执行这些方法。

可以用于登录时的黑名单验证


可以自定义一个模块文件做登录校验的中间件,然后 在settings.py里的下面列表中添加自定义的中间件来激活该中间件


说一下中间件

“middleware是用于处理的,就比如说request对象进来,首先它会经过request的middleware进行处理,它会返回两个结果,如果它是返回None,它就会继续下去,如果它返回一个response,它就会进入response的middleware,就直接返回到前端了。如果是返回None就会进入到下面一步,就是那个url的config,对他的路由进行处理。然后后面的话就是进入view的middleware.就是说的话,他的middleware就像跟一个钩子一样,它就对整个流程里的某一步的部分处理和调整,获得的一些结果。就大概是这个情况。”

« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。