HttpResponseRedirect是否阻止返回浏览器并再次提交表单? CreateView使用HttpResponseRedirect对吗? 如果是,那么我对我所拥有的东西感到困惑。 通过使用此视图和模板,我注意到我可以返回我的浏览器并一次又一次地提交表单......该字段的值仍然存在。
from .models import Person
class PersonCreateView(CreateView):
model = Person
fields = ['first_name']
template_name = 'persons/create.html'
success_url = '/'
模板:
{% extends "base.html" %}
{% block content %}
<form action="" method="post">{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Create" />
</form>
{% endblock %}
Django教程第4部分说:
# Always return an HttpResponseRedirect after successfully dealing
# with POST data. This prevents data from being posted twice if a
# user hits the Back button.
但在我的情况下我没有看到这种行为,有什么不同。
答案 0 :(得分:0)
&#34; HttpResponseRedirect是否阻止重新访问浏览器并再次提交表单?&#34;
- &GT;这是一个很好用的。
您的问题是您忘记了表单模板中的{% csrf_token %}
,并且可能会出现错误。
此外,我不知道{{ form.as_p }}
是否显示错误,请尝试进行循环:
{% for field in form.visible_fields %}
{{ field }}
{% if field.errors %}
<ul>
{% for error in field.errors %}
<li>{{ error }}</li>
{% endfor %}
</ul>
{% endif %}
{% endfor %}
{% for hidden in form.hidden_fields %}
{{ hidden }}
{% endfor %}