2016-11-10 3 views
0

J'utilise actuellement le framework intégré django-messages de la version django 1.10. Cependant, puisque les messages sont stockés dans la requête, et donc pas "namespaced" comme pour les différents modules, je crains que cela pourrait conduire à des circonstances potentielles où les messages créés par un module (par exemple un cadre de messagerie " votre message a été envoyé ") pourrait saigner dans un autre.Comment empêcher les messages Django de s'échapper vers d'autres modules?

Existe-t-il un moyen de "namespace" ces messages afin que nous ne ayons pas cet effet involontaire? En outre, la documentation indique que les messages expirent s'ils sont itérés, cela signifie-t-il que si j'oublie de les parcourir, ils risquent de s'accumuler sur plusieurs demandes?

+0

Je ne suis pas sûr de comprendre votre problème d'espace de noms - puisque tous les messages sont simplement stockés dans la requête et sont gérés par des sessions - ils se trouvent dans l'espace de noms de la requête. Tout objet qui manipule la requête (et donc la session) peut ajouter des messages. Je ne sais pas quel type d'espace de nommage supplémentaire vous auriez besoin, car les messages ne sont pas pour la communication entre modules (utilisez un cache externe ou un bus de messages pour cela). Cependant, vous pouvez ajouter des balises personnalisées à n'importe quel message pour les différencier davantage. Les messages sont effacés automatiquement une fois la réponse traitée, afin qu'ils ne s'accumulent pas. –

+0

@BurhanKhalid Comment empêcher les messages que j'ajoute dans le module 'email' d'être affichés par inadvertance dans le module' account' – AlanSTACK

Répondre

0

Vous n'avez pas à parcourir les messages pour les expirer. Django fait ça pour vous.

Quand on obtient un requestmessage il est itéré la prochaine request, affiché si le obtient modèle le permet et est retiré de request données. Cela signifie qu'il est montré une fois et est enlevé.

La seule façon d'obtenir un message de votre module email à afficher dans le module account est de rediriger l'utilisateur vers une page account directement après l'action qui ajoute le message a été complété (après un e-mail a été envoyé, par exemple). Vous avez un contrôle complet sur ce à partir de votre views.