我认为如果扩展generic view,Django已经这样做了 . 在创建时,'s an optional argument 956485 . This functionality is used in the automatically generated Django admin system. For example if you want a new resource, say user, you go to the url 956486 . After you submit it redirects you to 956487 with a success message 956488 . So this is possible, but I'仍在研究如何在不扩展通用视图的情况下进行 . 我还是Django和python的新手,所以通过Django核心找到他们是如何做到的对我来说并不容易 .
6 回答
如果您的成功页面需要动态消息,则需要以某种方式将其传递给它 . 您可以通过要重定向到的URL中的GET参数(例如
return HttpResponseRedirect('/success/?msg=My+success+message+here')
)或通过在会话中设置一些值(成功视图可以获取)来执行此操作 .Daniel Roseman的回复可能是 dangerous ,将您的网站打开到XSS漏洞 .
如果你 must 这样做,请确保从传递的任何消息中删除html标记 .
更好的方法是重定向到/ success /?msg = ok,并在您的视图中有一个字典:
做你想做的最好的方法是:在你的视图中将成功消息(或错误消息)设置为dict . 并使用render_to_response显示任何模板 .
在模板中,您可以验证是否有消息,以及消息是错误消息还是成功消息 .
有人喜欢这样:在你看来:
在您的模板中:
希望我帮助过
没有好办法做你想做的事 . 浏览器提交表单,该表单将使用户进行/提交 . 一旦你决定它是否“成功”,那就太晚了;浏览器已经确定了它的目的地 . 你所能做的只是重定向 . 但是,正如您所发现的那样,重定向时很难保持POST状态 .
我会放弃这个 . 这不是网站的运作方式 .
我认为如果扩展generic view,Django已经这样做了 . 在创建时,'s an optional argument 956485 . This functionality is used in the automatically generated Django admin system. For example if you want a new resource, say user, you go to the url 956486 . After you submit it redirects you to 956487 with a success message 956488 . So this is possible, but I'仍在研究如何在不扩展通用视图的情况下进行 . 我还是Django和python的新手,所以通过Django核心找到他们是如何做到的对我来说并不容易 .
我建议使用Django消息框架,用于一次性通知消息 .
https://docs.djangoproject.com/en/1.8/ref/contrib/messages/