使用 POST-Redirect-GET 模式时如何显示提交表单的状态?
How to show status about submitted form when using POST-Redirect-GET pattern?
提交表单时建议使用 POST-Redirect-GET 模式,以便在用户刷新时避免重新发送 POST 数据。这可以在处理 POST 数据的视图中完成,代码如下:
def get_name(request):
if request.method == 'POST':
form = NameForm(request.POST)
if form.is_valid():
interesting_information = 'Feedback after form submit'
return HttpResponseRedirect('/thanks/')
但是使用这种方案,如何向用户显示 interesting_information
,例如,可能是基于提交表单的状态信息?
您可以使用 Django 的 Messages Framework 在表单处理视图中设置消息:
from django.contrib import messages
messages.success(request, 'Feedback after form submit')
并在您的 /thanks/ 页面上向用户显示:
{% if messages %}
<ul class="messages">
{% for message in messages %}
<li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li>
{% endfor %}
</ul>
{% endif %}
您需要确保首先遵循文档“[启用消息]”(https://docs.djangoproject.com/en/1.8/ref/contrib/messages/#enabling-messages) 部分中的步骤。
提交表单时建议使用 POST-Redirect-GET 模式,以便在用户刷新时避免重新发送 POST 数据。这可以在处理 POST 数据的视图中完成,代码如下:
def get_name(request):
if request.method == 'POST':
form = NameForm(request.POST)
if form.is_valid():
interesting_information = 'Feedback after form submit'
return HttpResponseRedirect('/thanks/')
但是使用这种方案,如何向用户显示 interesting_information
,例如,可能是基于提交表单的状态信息?
您可以使用 Django 的 Messages Framework 在表单处理视图中设置消息:
from django.contrib import messages
messages.success(request, 'Feedback after form submit')
并在您的 /thanks/ 页面上向用户显示:
{% if messages %}
<ul class="messages">
{% for message in messages %}
<li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li>
{% endfor %}
</ul>
{% endif %}
您需要确保首先遵循文档“[启用消息]”(https://docs.djangoproject.com/en/1.8/ref/contrib/messages/#enabling-messages) 部分中的步骤。