我想创建一个简单的消息“您的评论已发布!”使用 Django 的 messages
框架。我正在使用 Django 的 comments
框架并将其设置为在发表评论后刷新页面
<div><input type="hidden" name="next" value="{{ request.get_full_path }}" /></div>
在我创建的 form.html
中覆盖 comments
的默认值。我还必须在我的 settings.py
中为 TEMPLATE_CONTEXT_PROCESSORS
包含 django.core.context_processors.request
。
无论如何,messages
documentation说要在 views.py
中添加消息。这是否意味着我需要覆盖 comments
的 views.py
或者是否有更简单的方法来执行此操作?为comments
修改源码我有点不爽。如果必须的话,我什至不确定在哪里添加行
messages.add_message( request, messages.SUCCESS, 'You comment has been posted!' )
在 django.contrib.comments.views.comments
中的 def post_comment()
下。
最佳答案
您可以 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)
此类片段的一个好地方是项目特定的 models.py,因为它们都是在模型定义时导入的。
关于python - 如何使用 Django 的内置框架为评论添加确认消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9898631/