如何在Django中重定向两次?

时间:2013-03-03 18:46:19

标签: python django

所以我有一个主页面(/ Main),以及一个允许用户与我联系的页面(让我们称之为/联系人)。

用户在联系人中成功提交表单后,我想将它们重定向到Main并在页面顶部显示一个小框,其中显示“表单已成功提交”。我已经能够做到这一点,通过重定向到看起来像/ Main / Success的URL,它基本上是传入成功参数的主视图。

问题是,我不希望用户浏览器中的URL显示/ Main / Success。我希望它在URL地址框中看起来像/ Main,即使用户在页面顶部看到一个额外的框。这是为了防止人们只在地址栏中键入/ Main / Success并转到顶部带有框的页面。用户只有在成功提交表单后才能看到成功框。此外,当用户使用成功框刷新主页面时,它应该只显示主页面,而不会显示成功框。

这是否意味着我应该重定向两次?从/联系到/ Main / Success to / Main再次?如果我这样做,我如何让盒子在Main上显示?任何想法如何处理这个问题?自上次以来我一直很困惑,非常感谢我能得到的任何帮助。

谢谢!

1 个答案:

答案 0 :(得分:4)

看看Django messages framework。它允许您定义此类消息并避免多重重定向。

您需要做的就是在模板中添加一些代码,这些代码将显示消息(如果有的话),如下所示:

{% if messages %}
    {% for message in messages %}
        {{ message }}
    {% endfor %}
{% endif %}

然后您可以在视图中向用户“发送”消息,如下所示:

from django.contrib import messages
messages.success(request, 'Form submitted successfully')

有关详细信息(例如,哪种消息以及模板中的消息具有哪些属性),请查看上述文档。