2013-03-03 94 views
0

所以我有一个主页面(/ Main)和一个允许用户与我联系的页面(让我们称之为/联系人)。如何在Django中重定向两次?

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

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

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

谢谢!

回答

4

看一看Django messages framework。它允许您定义这种类型的消息并避免多个重定向。

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

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

,然后就可以“送”的消息给用户的查看这样的:

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

详情(例如,其消息的种类有什么模板的属性的消息具有)检查出上述的文档。

+0

谢谢迈克尔,那真的很有帮助! – 2013-03-03 19:01:27