1

我想创建一个简单的消息“您的评论已发布!” 使用 Django 的messages框架。我正在使用 Django 的comments框架并对其进行设置,以便在发布评论后刷新页面

<div><input type="hidden" name="next" value="{{ request.get_full_path }}" /></div>

在我form.html创建以覆盖comments默认值的我的内部。我还必须django.core.context_processors.requestTEMPLATE_CONTEXT_PROCESSORS我的settings.py.

无论如何,messages文档说要在views.py. 这是否意味着我需要覆盖comments'sviews.py或者是否有更简单的方法来做到这一点?修改源代码我有点不舒服comments。如果必须,我什至不确定在哪里添加该行

 messages.add_message( request, messages.SUCCESS, 'You comment has been posted!' )

在下。def post_comment()_django.contrib.comments.views.comments

4

2 回答 2

4

您可以将自定义接收器连接comment_was_posted 信号。它看起来像这样:

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,因为它们都是在模型定义时导入的。

于 2012-03-27T22:51:57.420 回答
3

秘诀在于,当发表评论时,评论应用会发送一个信号。所以设置一个接收器来处理comment_was_posted(或comment_will_by_posted)信号。在接收方呼叫中messages.add_message(...)

这方面的文档是: https ://docs.djangoproject.com/en/1.4/ref/contrib/comments/signals/#module-django.contrib.comments.signals

https://docs.djangoproject.com/en/1.4/topics/signals/

于 2012-03-27T22:44:31.970 回答