我想使用Django的Messages模块,但是,我希望我的消息能够持续到用户单击消息旁边的X,而不是在用户重新加载页面时消息消失。
我很难过两个问题: 如何在消息被访问后使消息的上下文处理器不删除消息? 一旦用户点击“删除”按钮(调用ajax调用),我以后如何显式删除数据库中的消息?
谢谢!
答案 0 :(得分:8)
在您的情况下,django.contrib.messages
不会带给您任何好处。这是一个受RoR闪存系统启发的消息系统,消息不应该留在
您应该创建自己的邮件系统(可能是django-persistent-messages?),这样可以为数据库中的注册用户保存邮件。
如果您这样做,请不要忘记将其提供给其他人=)
答案 1 :(得分:7)
自1.2以来,Django有一个新的消息框架 - django.contrib.messages
- 现在已完全脱离auth
模块并提供更多功能。例如,它提供了处理expiration of messages的基本方法。
您还可以查看提供基于cookie的简单用户通知系统的django-cnotes应用程序。将常量CNOTES_AUTO_CLEAR
设置为False
会阻止自动清除备注。
还有django-notices,是内置消息通知系统的又一替代品。它没有任何魔力,但提供了一个优雅而简单的API。
答案 2 :(得分:4)
自2010年末以来,有一个图书馆django-persistent-messages,正是为了这个目标。它有很好的文档记录,可以很好地创建Stack Overflow风格的消息传递系统。
它还与内置的Django消息传递系统集成,因此代码更改相对较小,您仍然可以将原始系统用于不需要持久的消息。
答案 3 :(得分:2)
Django消息似乎是一个很好的起点,但需要扭曲到达你想去的地方,我不相信Django的未来版本不会破坏你的黑客。
从长远来看,实施自己的UserMessage模型可能会为您提供更好的服务。这使您可以完全,明确地控制消息生命周期。它也可能成为一个不错的可重用应用程序。