如何制作 django 消息 *** 样式?

Posted

技术标签:

【中文标题】如何制作 django 消息 *** 样式?【英文标题】:How to make django messages *** style? 【发布时间】:2011-03-05 19:37:49 【问题描述】:

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

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

谢谢!

【问题讨论】:

【参考方案1】:

自 2010 年底以来,图书馆 django-persistent-messages 就是为了实现这一目标。它有很好的文档记录,可以很好地创建一个 Stack Overflow 风格的消息系统。

它还集成了内置的Django消息系统,所以代码改动相对较小,对于不需要持久化的消息仍然可以使用原系统。

【讨论】:

【参考方案2】:

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

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

实现起来是一项相当简单的任务 User 上有外键的模型 在模板中提供消息的上下文处理器 使用消息的视图 可能是创建消息的辅助函数

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

【讨论】:

目前有 5 个应用程序提供一些消息通知功能:code.djangoproject.com/wiki/SessionMessages 感谢@Guillaume Esquevin,这似乎是与用户而不是会话相关的消息的最佳方法。 一个新手问题——为什么我需要一个中间件类?据我所知,context_processor 完成了所有挂钩工作还是我错了? 你是对的,那里不需要中间件,你可以简单地在上下文处理器中获取用户的消息。只有临时消息才需要中间件来实例化一个数组来放入消息。我将编辑我的帖子。【参考方案3】:

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

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

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

【讨论】:

是否有任何与用户模块相关的替代品?即,我希望消息始终为用户显示,而不是绑定到特定会话。【参考方案4】:

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

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

【讨论】:

从 1.2 开始,Django 除了旧的 API 之外还有一个新的消息框架。它与任何其他 contrib 组件一样稳定。

以上是关于如何制作 django 消息 *** 样式?的主要内容,如果未能解决你的问题,请参考以下文章

使用引导程序样式化错误消息

Django 消息,如何隐藏特定消息

如何在 Django 中使用反向工作来制作 *** 样式的 URL,以允许 slug 更改?

如何使用 Django 创建用户到用户的消息系统?

python测试开发django-128.Jquery消息提示插件toastr使用

如何在 Django 中使用 toastr 获取成功或失败消息