我想创建一条简短的消息“您的评论已发布!”使用Django的messages
框架。我正在使用Django的comments
框架并进行设置,以便在发布评论后刷新页面
<div><input type="hidden" name="next" value="{{ request.get_full_path }}" /></div>
我创建的form.html
内部覆盖了comments
的默认值。我还必须在django.core.context_processors.request
内包含TEMPLATE_CONTEXT_PROCESSORS
settings.py
。
无论如何,messages
documentation说要在views.py
内添加消息。这是否意味着我需要覆盖comments
的{{1}}或者是否有更简单的方法来执行此操作?修改views.py
的源代码我有点不舒服。如果必须,我甚至不确定在哪里添加行
comments
在 messages.add_message( request, messages.SUCCESS, 'You comment has been posted!' )
的{{1}}下。
答案 0 :(得分:3)
秘诀是,在发表评论时,评论应用会发送信号。因此,设置一个接收器来处理comment_was_posted(或comment_will_by_posted)信号。在接收者呼叫中messages.add_message(...)
和
答案 1 :(得分:3)
您可以connect a custom receiver到comment_was_posted signal。它看起来像这样:
from django.contrib.comments.signals import comment_was_posted
def thank_user(sender, comment=None, request=None, **kwargs):
messages.add_message( request, messages.SUCCESS, 'You comment has been posted!' )
comment_was_posted.connect(thank_user)
这样一个片段的好地方是project_specific models.py,因为它们都是在模型定义时导入的。