Django中间件

引言:

  Django的中间件是介于request以及response处理之间的一道处理过程,其作用是在全局改变django的输入和输出,谨慎使用。中间件位于view和路由层之间

 

中间件的配置:

  在settings中有MIDDLEWARE_CLASSES列表,内部所有的元素都是中间件,顺序是自上而下,原理是通过反射找到对应的中间件,然后遍历循环

 

 

中间件的5个方法:

  1 process_request(self,request),request前置处理函数,又返回值可能会有报错,一般返回Httpresponse或者None,如果有返回值,则直接跳到当前中间件的process_response,依次执行中间件中的process_response方法

  2 process_response(self,request,response),request后置处理函数,这个方法在django执行view函数生成response之后,这里能处理修改response内容,比如加密,比如内容压缩。

  3 process_exception(self,resquest,exception),request处理过程中出现了问题,并且view函数跑出了一个未捕获的异常才能被调用,这个钩子可以用来发送错误通知,并将快照信息输出到日志文件,也可以尝试从错误中自动恢复,但是如果返回为None则会调用django内置异常处理机制

  4 process_view(self,request,view,args,kwargs),在view函数实际执行之前。

  5 process_template_response(self,request,response),如果view函数中有返回的对象含有render方法,会被触发

 

使用场景:

  1 IP限制,生成黑名单ip列表,阻止一些ip的访问

  2 url访问过滤,如果用户访问的是某些对外开放的函数就放行,比如登录页面,如果访问其他视图需要检测是不是有session已经有了放行,没有返回login,这样就省得再多个视图函数上写装饰器了

  3 缓存  接受到请求后,可以先去查是不是有数据,有的话直接返回给用户,不在调用view

 

posted @ 2020-10-16 17:27  Yuan_x  阅读(122)  评论(0编辑  收藏  举报