Я хотел бы назвать функцию в своем представлении или в любом модуле и обновить тело ответа.Django вы можете получать сигналы в промежуточном программном обеспечении или изменять объект ответа по всему миру?
Мое первоначальное мышление заключается в реализации промежуточного программного обеспечения 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
Как вы получаете объект ответа в обратном вызове? –
Eh плохой образец кода. Метод живет в классе промежуточного ПО и будет устанавливать свойство экземпляра, которое может быть использовано для обновления тела ответа в методе 'process_response'. –
Это не сработает. Среднее программное обеспечение создается для каждого процесса, а не для запроса. –