使用POST-Redirect-GET模式时如何显示已提交表单的状态?

Equ*_*Dev 2 django django-forms

提交表单时建议使用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/')
Run Code Online (Sandbox Code Playgroud)

但是使用这个方案,如何interesting_information向用户显示,例如可能是基于提交的表单的状态信息?

Oli*_*Oli 6

您可以使用Django的消息框架在表单处理视图中设置消息:

from django.contrib import messages
messages.success(request, 'Feedback after form submit')
Run Code Online (Sandbox Code Playgroud)

并在/感谢/页面上将其显示给用户:

{% if messages %}
<ul class="messages">
    {% for message in messages %}
    <li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li>
    {% endfor %}
</ul>
{% endif %}
Run Code Online (Sandbox Code Playgroud)

您需要确保首先按照文档"[启用消息]"(https://docs.djangoproject.com/en/1.8/ref/contrib/messages/#enabling-messages)部分中的步骤操作.