0

ビューまたはモジュールで関数を呼び出して、応答本文を更新したいと思います。

私の最初の考えは、process_responseミドルウェアを実装して応答本文を更新し、関数呼び出しで送信されたシグナルを受信するコールバックを設定することですが、試してみると、レシーバーは決して起動しません (ミドルウェアの外でシグナル/レシーバーをテストしました)クラス/モジュールであり、正常に動作します。

例:

# in module that defines the signal
module.signal.send(msg='this is a message to append on the response body')

# in view or model
signal.connect(callback)

# in middleware.py
def callback(self, sender, *kwargs):
    self.body_text = kwargs.pop('msg')

def process_response(self, request, response):
    response.body = response.body + self.body_text
    return response
4

1 に答える 1

0

あなたが本当にこれをしたいのなら、あなたは仲介request者として使うことができます。

リクエストの開始/終了シグナルを使用して、このテキストをリクエストオブジェクトの属性に追加する新しいリスナーを登録/登録解除します。

次に、process_responseミドルウェアで、その属性を確認する必要があります。ただし、応答ステータスにも注意する必要があります。たとえば、リダイレクトの場合、応答本文に何かを入れても意味がありません。

于 2010-06-29T23:26:23.027 に答える