Je voudrais appeler une fonction dans ma vue ou n'importe quel module d'ailleurs et le faire mettre à jour le corps de la réponse. Mon idée initiale est de mettre en œuvre un middleware process_response
pour mettre à jour le corps de la réponse, et configurer un rappel qui reçoit les signaux envoyés dans mes appels de fonction, mais quand j'essaye, le récepteur ne se déclenche jamais (j'ai testé le singal/récepteur en dehors de la classe middleware/module et il fonctionne très bienDjango peut-il recevoir des signaux dans le middleware ou modifier globalement l'objet de réponse?
Exemple:..
# 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
Comment obtenez-vous l'objet de réponse dans le rappel? –
Eh mauvais échantillon de code. La méthode réside dans la classe middleware et définirait une propriété d'instance qui pourrait être utilisée pour mettre à jour le corps de la réponse dans la méthode 'process_response'. –
Ça ne va pas marcher. L'intergiciel est instancié par processus et non par requête. –