如何在Django中进行双重重定向?
我有一个主页面(/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')
想了解更多细节(比如有哪些类型的消息,以及模板中的消息有哪些属性),可以查看上面提到的文档。