当miss miss斜杠时,django中间件只有“process_response”

时间:2009-11-25 07:27:55

标签: django middleware

我写了这样的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进行测试而没有尾随“/”时我只能看到“结束”,为什么?

1 个答案:

答案 0 :(得分:14)

documentation解释了这一点。

中间件类按它们出现的顺序处理。 CommonMiddleware类比LogMiddleware类高,因此首先进行处理。它执行重定向,因为您的URL不以斜杠结束,因此返回HttpResponseRedirect。

如果请求中间件返回响应(如本例所示),则不会处理其他请求中间件类,因此不会记录“start”。但是,响应中间件类始终处理,因此会记录“结束”。