使用 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) 部分中的步骤。