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 回答