Django的中间件只有“process_response”当小姐斜线
-
22-09-2019 - |
题
我已经写这样一个middware:
class LogMiddleware( object ):
def process_request( self, request ):
logging.debug("start")
def process_response( self, request, response ):
logging.debug("end")
return response
和我把它放在MIDDLEWARE_CLASSES的底
大多数时间它工作正常。
当我与URL /管理员测试没有一个“/”结尾,我只能看到“结束”记录下来,为什么?
解决方案
在文档解释这一点。
中间件类在它们出现的顺序进行处理。该CommonMiddleware类是比你LogMiddleware类上涨,所以首先处理。因为你的URL不是以斜线结束它执行重定向,所以返回一个HttpResponseRedirect。
如果一个请求中间件返回响应,如在这种情况下,没有进一步的请求中间件类被处理,所以“开始”不记录。然而,响应中间件类是总是处理,因此 '结束' 被记录。
不隶属于 StackOverflow