我想使用 Django 的消息模块,但是,我希望我的消息一直存在,直到用户单击消息旁边的 X,而不是在用户重新加载页面后消息消失。
我被两个问题难住了:如何使消息的上下文处理器在消息被访问后不删除它们?一旦用户单击“删除”按钮(调用 ajax 调用),我以后如何从数据库中显式删除消息?
谢谢!
我想使用 Django 的消息模块,但是,我希望我的消息一直存在,直到用户单击消息旁边的 X,而不是在用户重新加载页面后消息消失。
我被两个问题难住了:如何使消息的上下文处理器在消息被访问后不删除它们?一旦用户单击“删除”按钮(调用 ajax 调用),我以后如何从数据库中显式删除消息?
谢谢!
在你的情况下django.contrib.messages
不会给你带来任何好处。这是一个受 RoR 闪存系统启发的消息系统,消息不应该留在周围
您应该创建自己的消息系统(可能是 django-persistent-messages?),它将注册用户的消息保存在数据库中。
如果您这样做,请不要忘记将其提供给其他人=)
从 1.2 开始,Django 有了一个新的消息框架django.contrib.messages
——它现在完全脱离了auth
模块并提供了更多的功能。例如,它提供了一种处理消息过期的基本方法。
您还可以查看django-cnotes应用程序,它提供了一个简单的基于 cookie 的用户通知系统。设置常量CNOTES_AUTO_CLEAR
以False
防止自动清除注释。
还有django-notices,这是内置消息通知系统的另一个替代品。它没有魔法,但提供了一个优雅而简单的 API。
Since late 2010, there is the library, django-persistent-messages, for exactly this goal. It's reasonably well documented and works well to create a Stack Overflow-style messaging system.
It also integrates with the built-in Django messaging system, so the code changes are relatively minor, and you can still use the original system for messages that don't need to be persistent.
Django 消息似乎是一个很好的起点,但需要扭曲才能到达您想去的地方,而且我不相信 Django 的未来版本不会破坏您的 hack。
从长远来看,实现您自己的 UserMessage 模型可能会更好地为您服务。这使您可以完全、明确地控制消息生命周期。它也可能是一个很好的可重用应用程序。