11

我想使用 Django 的消息模块,但是,我希望我的消息一直存在,直到用户单击消息旁边的 X,而不是在用户重新加载页面后消息消失。

我被两个问题难住了:如何使消息的上下文处理器在消息被访问后删除它们?一旦用户单击“删除”按钮(调用 ajax 调用),我以后如何从数据库中显式删除消息?

谢谢!

4

4 回答 4

8

在你的情况下django.contrib.messages不会给你带来任何好处。这是一个受 RoR 闪存系统启发的消息系统,消息不应该留在周围

您应该创建自己的消息系统(可能是 django-persistent-messages?),它将注册用户的消息保存在数据库中。

  • 实施这是一项相当微不足道的任务
  • User 上有外键的模型
  • 一个上下文处理器,使模板中的消息可用
  • 消费消息的视图
  • 也许是创建消息的辅助函数

如果您这样做,请不要忘记将其提供给其他人=)

于 2010-06-21T11:37:00.663 回答
7

从 1.2 开始,Django 有了一个新的消息框架django.contrib.messages——它现在完全脱离了auth模块并提供了更多的功能。例如,它提供了一种处理消息过期的基本方法。

您还可以查看django-cnotes应用程序,它提供了一个简单的基于 cookie 的用户通知系统。设置常量CNOTES_AUTO_CLEARFalse防止自动清除注释。

还有django-notices,这是内置消息通知系统的另一个替代品。它没有魔法,但提供了一个优雅而简单的 API。

于 2010-06-21T09:32:20.540 回答
4

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.

于 2011-02-23T14:26:40.977 回答
2

Django 消息似乎是一个很好的起点,但需要扭曲才能到达您想去的地方,而且我不相信 Django 的未来版本不会破坏您的 hack。

从长远来看,实现您自己的 UserMessage 模型可能会更好地为您服务。这使您可以完全、明确地控制消息生命周期。它也可能是一个很好的可重用应用程序。

于 2010-06-19T17:50:50.890 回答