2016-03-19 7 views
0

私はdjangoシグナルを扱っており、request_finishedシグナル用のハンドラに特定のHTTP要求が行われたときにのみ特定の操作を実行させたいと考えています。どのようにこれを行う上の任意のアイデア?私は、この信号の送信者であるが、そこから要求パラメータを処理することができないWSGIHandlerを使用できると思っていました。djangoシグナルrequest_finished

答えて

1

the docsに従って、この信号で送信される唯一の引数はsender

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

送信者にあなたが送信者のクラスを受けることに注意してください、ではないのでrequest_finished信号に要求インスタンスを取得する方法はありませんが、インスタンス。

あなたはこのように、要求のオプションをチェックすることができるようにするためにprocess_response()方法でcustom middlewareを書き込むことができます。

class MyCustomMiddleware(object): 

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

は、次に設定ファイルにMIDDLEWARE_CLASSESMyCustomMiddlewareを置きます。この場合、応答サイクル要求が既に形成されているため、位置は重要ではありません。

+0

ありがとうございました。実際に回避策を見つけました。私はカスタムミドルウェアを持っているというあなたのアイデアに同意します。 –

関連する問題