如何在Django中进行双重重定向?

1 投票
1 回答
539 浏览
提问于 2025-04-17 17:47

我有一个主页面(/Main),还有一个让用户联系我的页面(我们叫它 /Contact)。

当用户在联系页面成功提交表单后,我想把他们重定向到主页面,并在页面顶部显示一个小框框,里面写着“表单提交成功”。我已经实现了这个功能,通过重定向到一个看起来像 /Main/Success 的网址,这其实就是主页面,只是多了一个成功的参数。

问题是,我不想让用户的浏览器地址栏显示 /Main/Success。我希望地址栏里显示的还是 /Main,尽管用户看到的是页面顶部的那个小框框。这是为了防止人们直接在地址栏输入 /Main/Success,直接跳到那个有框框的页面。用户只有在成功提交表单后才能看到这个成功的框框。而且,当用户刷新带有成功框的主页面时,应该只显示主页面,不再有那个框框。

这是不是意味着我需要重定向两次?从 /Contact 到 /Main/Success,再到 /Main?如果这样做,我该如何在主页面上显示那个框框呢?有没有什么好的方法来解决这个问题?我上次就很困惑,非常感谢任何能提供的帮助。

谢谢!

1 个回答

5

看看这个Django消息框架。它可以让你定义这样的消息,并且避免了多次重定向。

你只需要在你的模板中添加一些代码,用来显示消息(如果有的话),像这样:

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

然后你就可以在你的视图中“发送”消息给用户,像这样:

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

想了解更多细节(比如有哪些类型的消息,以及模板中的消息有哪些属性),可以查看上面提到的文档。

撰写回答