Django中间件看完这篇彻底明白
admin
2021-01-25 20:26:16
0

我们在使用python的一些库时,会遇到中间件这个概念,比如scrapy和Django,那么什么是中间件呢?什么是中间件

中间件就是在目标和结果之间进行的额外处理过程,在Django中就是request和response之间进行的处理,相对来说实现起来比较简单,但是要注意它是对全局有效的,可以在全局范围内改变输入和输出结果,因此需要谨慎使用,否则不仅会造成难以定位的错误,而且可能会影响整体性能。中间件有什么用

如果想要修改HttpRequest或者HttpResponse,就可以通过中间件来实现。

登陆认证:在中间件中加入登陆认证,所有请求就自动拥有登陆认证,如果需要放开部分路由,只需要特殊处理就可以了。

流量统计:可以针对一些渲染页面统计访问流量。

恶意请求拦截:统计IP请求次数,可以进行频次限制或者封禁IP。中间件执行流程

在Django中自定义中间件是非常简单的,在settings.py中有一个配置项:MIDDLEWARE=[ ‘django.middleware.security.SecurityMiddleware’, ‘django.contrib.sessions.middleware.SessionMiddleware’, ‘django.middleware.common.CommonMiddleware’, ‘django.middleware.csrf.CsrfViewMiddleware’, ‘django.contrib.auth.middleware.AuthenticationMiddleware’, ‘django.contrib.messages.middleware.MessageMiddleware’, ‘django.middleware.clickjacking.XFrameOptionsMiddleware’, ]

只要把添加的中间件配置在这里就可以了。每一个中间件都是一个类,多个中间件可以写在同一个文件,也可以在独立文件中。每个中间件可以包含五个方法:process_request(self,request) process_view(self,request,callback,callback_args,callback_kwargs) process_template_response(self,request,response) process_exception(self,request,exception) process_response(self,request,response)

相关内容