我已经写这样一个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。

如果一个请求中间件返回响应,如在这种情况下,没有进一步的请求中间件类被处理,所以“开始”不记录。然而,响应中间件类是总是处理,因此 '结束' 被记录。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top