在表单提交方案中,形式是交到“/提交”。我想用户重定向到“/ sucess”成功,并通过渲染一些消息,在新的URL的模板。如何做到这一点在Django?选择render_to_response不会执行重定向和HttpResponseRedirect没有做模板渲染。

有帮助吗?

解决方案

如果你成功的页面需要一个动态的消息,您需要在那里通过它在某种程度上。如return HttpResponseRedirect('/success/?msg=My+success+message+here') - - 您可以通过在您重定向到URL GET参数做到这一点。或者在会议上,其成功视图可以拿起设置一些值

其他提示

这丹尼尔罗斯曼的响应是可能的危险下,打开你的网站XSS弱点。

请确保您由什么,如果你的传递消息的HTML标签必须这样来做。

有一个更好的方式是重定向到/成功/味精= OK,并在您的视图字典:

{ 'ok': 'Your success message' }

做你想要什么,最好的方法是: 在您的视图设置成功消息(或错误信息)作为一个字典。并使用选择render_to_response显示任何模板。

在您的模板,你可以验证,如果有一个消息,如果消息是错误消息或成功消息。

一些这样的: 在视图:

if anyError:
   dict = {"message" : {"error" : "The error message"}}
else:
   dict = {"message" : {"success" :"The success message"}}

在您的模板:

   {% if message %}
      {% if message.error %}
         {{ message.error }}
      {% else %}
         {{ message.success }}
      {% endif %}
   {% endif %}

希望我已经帮助

有就是做你想要的东西没有什么好办法。浏览器提交表单,这将用户带到/提交。一旦你决定它是否是“成功”,这是为时已晚;浏览器已经决定了它的目的地。所有你能做的就是重定向。但是,当你发现了,这将是很难让你的POST状态,当你重定向。

我想放弃这个。这不是网站是如何工作的。

我觉得如果你扩展href="https://docs.djangoproject.com/en/1.4/ref/generic-views/" rel="nofollow">通用视图。在创建有一个可选的参数“post_save_redirect”。此功能是在自动生成的Django管理系统中使用。例如,如果你想要一个新的资源,用户说,你去URL“/用户/添加”。你提交之后,它会将您重定向到“/用户/ 1”成功消息“你刚刚保存的用户#1”。因此,这是可能的,但我仍然在研究如何做到这一点不扩展通用视图。我仍然很新的Django和蟒蛇,所以希望通过Django的核心,发现他们是如何做到的也不是那么容易的事情。

我建议使用其用于一次性通知消息的Django消息框架。

https://docs.djangoproject.com/en/1.8/ref /了contrib /消息/

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top