2016-11-10 57 views
0

我目前使用django版本1.10的内置django-messages框架。但是,由于消息存储在请求中,因此对于不同模块而言不是“命名空间”,所以我担心这可能导致潜在情况,其中由一个模块创建的消息(例如,消息传递框架“你的消息已发送“)可能会流血到另一个。如何防止Django消息泄漏到其他模块?

有没有办法“命名空间”这些消息,所以我们没有这种意想不到的影响?

此外,文档中说消息在迭代完成时会过期,这是否意味着如果我忘记迭代它们,它们有可能建立在多个请求之上?

+0

我不确定我是否理解你的命名空间问题 - 因为所有消息都存储在请求中,并由会话管理 - 它们位于请求命名空间中。任何操纵请求的对象(以及会话)都可以添加消息。我不知道你需要什么样的附加命名空间,因为消息不是用于模块间通信的(使用外部缓存或消息总线)。但是,您可以将自定义标签添加到任何消息以进一步区分它们。响应处理后,消息会自动清除,因此不会累积。 –

+0

@BurhanKhalid如何防止我在'email'模块中添加的消息无意中显示在'account'模块中 – AlanSTACK

回答

0

您不必遍历消息以使其过期。 Django为你做到这一点。

当一个request得到了message它遍历下一个request,获取如果模板允许它并从request数据删除显示。这意味着它只显示一次并被删除。

只有这样,才能从你email模块message要显示的account模块是增加了message已经完成(邮件发送后的动作后直接向用户的account重定向页面,例如)。您可以完全控制views