如何制作django消息StackOverflow风格?

时间:2010-06-19 16:52:16

标签: python ajax django django-users

我想使用Django的Messages模块,但是,我希望我的消息能够持续到用户单击消息旁边的X,而不是在用户重新加载页面时消息消失。

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

谢谢!

4 个答案:

答案 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模型可能会为您提供更好的服务。这使您可以完全,明确地控制消息生命周期。它也可能成为一个不错的可重用应用程序。