1

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

用户在 Contact 中成功提交表单后,我想将他们重定向到 Main 并在页面顶部显示一个小框,上面写着“表单提交成功”。我已经能够做到这一点,方法是重定向到一个类似于 /Main/Success 的 URL,它基本上是传入成功参数的主视图。

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

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

谢谢!

4

1 回答 1

5

看看Django 消息框架。它允许您仅定义此类消息并避免多次重定向。

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

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

然后您可以像这样在您的视图中向用户“发送”消息:

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

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

于 2013-03-03T18:59:33.813 回答