首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Django从自定义中间件添加contrib.messages

Django从自定义中间件添加contrib.messages
EN

Stack Overflow用户
提问于 2011-05-17 16:43:21
回答 4查看 971关注 0票数 4

我已经实现了一个自定义中间件,它检查用户配置文件中的某些字段。这些字段在注册时是不需要的(为了使用户能够快速和容易地注册),但是,我更希望他们填写它们。

我的中间件检查它们是否已设置。如果没有,则通过消息通知用户。我遇到了两个问题。

  1. 每当我提交已发布的表单时,由于没有模板显示消息,中间件将第二次添加消息,因为消息是在消息发布时调用的,并且在重定向之后再次调用。 我通过迭代中间件中的消息并检查我将要添加的消息是否已经在那里解决了这个问题。如果是的话,它不会再加一次。
  2. 当用户通过更新他们的配置文件来解决问题时,在下一个页面加载时,消息仍然存在。不过在那之后,一切都正常。在我的中间件开始时,我实际上进行了一个检查,如果请求被发布,它将不返回(我本以为这可以解决这两个问题,但两者都解决不了)。

知道如何解决第二个问题吗?有更好的办法解决我的第一个问题吗?

谢谢。

编辑:

是否有办法清除视图中的消息?我已经尝试过迭代它们(没有storage.used=False),而且它们仍然存在。我希望这能解决我的两个问题。

EN

回答 4

Stack Overflow用户

发布于 2012-04-19 17:18:59

Yoy可以使用https://github.com/AliLozano/django-messages-extends的粘性消息,这是一个只将消息保存在请求中而不是在会话中保存的存储

票数 2
EN

Stack Overflow用户

发布于 2011-05-17 16:51:42

那么,您是在使用django.contrib.messages存储永久通知吗?它的目的是显示一次通知,其中用户只看到一次消息,然后消息就消失了。它所要做的事情是,“表单编辑成功”之类的消息。

就处理用户消息堆栈中的消息而言,需要考虑的是:每当您使用RequestContext (讨论过的这里)呈现模板时,所有消息都会被刷新(不管它们是否实际显示在页面上)。

我不完全确定这是你真正想要的答案,我对你的问题有点困惑。但是,我确信您使用的消息超出了它的预期目的,这很可能是您遇到麻烦的原因。

票数 0
EN

Stack Overflow用户

发布于 2011-05-17 18:31:33

您可以使用中间件的回复()方法添加消息。到那时,您将知道是否向用户显示消息,这取决于他的配置文件现在是否已填入字段。

考虑使用django.contrib.messages。您可能不希望在所有请求上显示“填写XYZ字段”消息,但只希望在少数几个页面上显示,例如当用户登录或查看其配置文件页面时。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6034213

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档