我写了这样的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 / admin进行测试而没有尾随“/”时我只能看到“结束”,为什么?
答案 0 :(得分:14)
documentation解释了这一点。
中间件类按它们出现的顺序处理。 CommonMiddleware类比LogMiddleware类高,因此首先进行处理。它执行重定向,因为您的URL不以斜杠结束,因此返回HttpResponseRedirect。
如果请求中间件返回响应(如本例所示),则不会处理其他请求中间件类,因此不会记录“start”。但是,响应中间件类始终处理,因此会记录“结束”。