如何在Django注释错误时重定向回同一页面

时间:2011-07-23 17:33:29

标签: django django-comments

如果评论提交表单中有错误,您如何将Django评论重定向回到您填写评论的同一页面?

所以基本上我有这样的模板:

{% block content %}
{% render_comment_form for show %}
{% get_comment_count for show as comment_count %}
<div id="comments-count">
{% if comment_count == 0 %}
    No comments yet. Be the first!
{% else %}
    Number Of Comments: {{ comment_count }}
{% endif %}
</div>
{% if comment_count > 0 %}
{% render_comment_list for show %}
{% endif %}
{% endblock %}

我创建了自己的list.html和form.html,一切看起来都很好。在form.html模板中有一些代码如下:

<ul class="form-errors">
{% for field in form %}
    {% for error in field.errors %}
    <li>{{ field.label }}: {{ error|escape }}</li>
    {% endfor %}
{% endfor %}
</ul>

很明显,如果评论提交表单中有错误,我希望用户只能看到与之前相同的页面,只会在评论表单中显示一些错误。或者,如果无法做到这一点,只需忽略错误,而不是转换到preview.html模板,它只会保存评论并再次返回页面。

有任何帮助吗?理想情况下,我不想创建自定义评论应用程序。此功能应该已经存在。我知道你可以传递一个下一个变量(我正在这样做),但它只有在评论表单成功时才有效。

1 个答案:

答案 0 :(得分:1)

你必须使用HttpResponseRedirect

from django.http import HttpResponseRedirect

def comment_form(request):
    error = request.GET.get('error', None)
    requestDict = {'error': error}
    return render_to_response('comments.html', requestDict, context_instance=RequestContext(request))

def post_comment(request):
    ....
    your code
    ....
    if something_goes_wrong:
        HttpResponseRedirect('project/comment_form/?error=ThereisProblem')

在模板中你可以这样做:

{If error %}
   <h1>{{error}}<h1>
{%else%}
    render comments...
{%endif%}

希望这会对你有所帮助:)。