我正在使用django评论框架。它说它提供了很多功能,我也可以在源文件中看到有各种选项,但文档有点差。
有两个问题
delete button
,我不想将用户重定向到其他页面。我只想删除评论并附上确认消息。我没有找到任何文档告诉我如何在django comments framework
error while submitting the comment form
,则用户为redirected to the preview page
(也处理错误),我不希望这样。我希望将用户重定向到同一页面,并显示相应的错误。我怎么能这样做呢。感谢任何帮助或指示
答案 0 :(得分:3)
该视图的Timmy代码片段仍然缺少一个import语句,并且没有返回响应。这是相同的代码,更新到现在的外部django_comments应用程序(django 1.6 +):
from django.shortcuts import get_object_or_404
import django.http as http
from django_comments.views.moderation import perform_delete
from django_comments.models import Comment
def delete_own_comment(request, id):
comment = get_object_or_404(Comment, id=id)
if comment.user.id != request.user.id:
raise Http404
perform_delete(request, comment)
return http.HttpResponseRedirect(comment.content_object.get_absolute_url())
这会在没有任何消息的情况下重新指向原始页面(但可能会减少一条评论)。
注册此视图的网址:
url(r'^comments/delete_own/(?P<id>.*)/$', delete_own_comment, name='delete_own_comment'),
然后直接修改comments / list.html以包含:
{% if user.is_authenticated and comment.user == user %}
<a href="{% url 'delete_own_comment' comment.id %}">--delete this comment--</a>
{% endif %}
答案 1 :(得分:2)
已有评论的删除视图,但它是审核系统的一部分。您需要允许所有用户can_moderate
权限,这显然允许他们删除他们想要的任何评论(不仅仅是他们的评论)。您可以快速编写自己的视图,检查他们正在删除的评论是否属于他们:
from django.shortcuts import get_object_or_404
from django.contrib.comments.view.moderate import perform_delete
def delete_own_comment(request, comment_id):
comment = get_object_or_404(Comment, id=comment_id)
if comment.user.id != request.user.id:
raise Http404
perform_delete(request, comment)
并在您的模板中
{% for comment in ... %}
{% if user.is_authenticated and comment.user == user %}
{% url path.to.view.delete_comment comment_id=comment.id as delete_url %}
<a href="{{ delete_url }}">delete your comment</a>
{% endif %}
{% endfor %}
对于第二个问题,you can see that the redirection will always happen if there are errors(即使设置了preview = False)。没有太多变通办法。你可以创建自己的视图来包装post_comment
视图(或者只是在没有重定向的情况下编写你自己的post_comment)