如果评论提交表单中有错误,您如何将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模板,它只会保存评论并再次返回页面。
有任何帮助吗?理想情况下,我不想创建自定义评论应用程序。此功能应该已经存在。我知道你可以传递一个下一个变量(我正在这样做),但它只有在评论表单成功时才有效。
答案 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%}
希望这会对你有所帮助:)。