【发布时间】:2010-06-27 07:53:37
【问题描述】:
我想在我的视图或任何模块中调用一个函数并让它更新响应正文。
我最初的想法是实现一个process_response 中间件来更新响应体,并设置一个回调来接收在我的函数调用中发送的信号,但是当我尝试时,接收器永远不会触发(我已经测试过信号/receiver 在中间件类/模块之外,它工作正常。
例子:
# 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
【问题讨论】:
-
你是如何在回调中获取响应对象的?
-
糟糕的代码示例。该方法位于中间件类中,并会设置一个实例属性,该属性可用于更新
process_response方法中的响应正文。 -
那行不通。中间件是按进程实例化的,而不是按请求实例化的。
标签: django response signals middleware