我正在使用django信号并希望request_finished
信号的处理程序仅在给定的http请求时才执行某些操作。有关如何做到这一点的任何想法?我以为我可以使用WSGIHandler
这个信号的发送者,但不能处理它的请求参数。
答案 0 :(得分:2)
无法在request_finished
信号中获取请求实例,因为根据the docs,使用此信号发送的唯一参数是sender
sender
The handler class – e.g. django.core.handlers.wsgi.WsgiHandler – that handled the request.
请注意,在发件人中,您会收到一类发件人,而不是实例。
您可以使用process_response()
方法编写custom middleware,以便能够检查请求选项,如下所示:
class MyCustomMiddleware(object):
def process_response(self, request, response):
if request.something == 'something':
# do something
return None
然后将MyCustomMiddleware
放入设置文件中的MIDDLEWARE_CLASSES。在这种情况下,位置并不重要,因为已经形成了响应循环请求。