“仅django middware”;处理“U响应”;当未命中尾随斜杠时

“仅django middware”;处理“U响应”;当未命中尾随斜杠时,django,middleware,Django,Middleware,我写过这样一个中间件: class LogMiddleware( object ): def process_request( self, request ): logging.debug("start") def process_response( self, request, response ): logging.debug("end") return response 我把它放在中间件类的底部 大多数情况下,它运行良好

我写过这样一个中间件:

class LogMiddleware( object ):

    def process_request( self, request ):
        logging.debug("start")

    def process_response( self, request, response ):
        logging.debug("end")
        return response
我把它放在中间件类的底部

大多数情况下,它运行良好

当我使用url/admin测试时,没有尾随“/”,我只能看到“end”被记录,为什么?

解释了这一点

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

如果请求中间件返回响应(如本例所示),则不会处理进一步的请求中间件类,因此不会记录“start”。然而,响应中间件类总是被处理的,所以“end”被记录下来