2016-03-19 5 views
0

Ich arbeite mit django Signal und möchte einen Handler für request_finished Signal bestimmte Operation nur ausführen, wenn eine bestimmte HTTP-Anfrage gemacht wird. Irgendeine Idee, wie man das macht? Ich hatte gedacht, ich könnte die WSGIHandler verwenden, die der Absender für dieses Signal ist, aber nicht in der Lage, die Anfrageparameter daraus zu verarbeiten.django Signal request_finished

Antwort

1

Es gibt keine Möglichkeit Anforderungsinstanz in request_finished Signal zu bekommen, weil nach the docs das einzige Argument, das mit diesem Signal gesendet wird sender ist

sender 
The handler class – e.g. django.core.handlers.wsgi.WsgiHandler – that handled the request. 

Beachten Sie, dass in Absender Sie eine Klasse von Absender erhalten, nicht eine Instanz.

Sie können custom middleware mit process_response() Methode schreiben, um dies zu können Anfrage Optionen prüfen, wie:

class MyCustomMiddleware(object): 

    def process_response(self, request, response): 
     if request.something == 'something': 
      # do something 
     return None 

Dann MyCustomMiddleware in Einstellungsdatei in MIDDLEWARE_CLASSES setzen. In diesem Fall spielt die Position keine Rolle, weil die Antwortzyklusanforderung bereits gebildet wurde.

+0

Vielen Dank. Eigentlich eine Arbeit gefunden. Ich stimme Ihrer Idee einer benutzerdefinierten Middleware zu. –