我试图在Django视图中创建一个重定向到一个外部URL,一些get参数附加到请求。在做了一些环顾四周的尝试后,似乎已经打了一个路障。
所以我的看法看起来像这样
def view(request): data = get.data(request) if something in data: return HttpResponseRedirect('example.com')
这是我能够得到的。我知道你在请求url可以指定一些get参数,如下所示:
... return HttpResponseRedirect('example.com?name=smith&color=brown')
然而,由于某些数据是敏感的,我不希望它最终在url。因为它是一个外部url,我不能使用接受视图参数的redirect()快捷方式。所以祈祷告诉你,如何完成这样的任务?
编辑
在做了一些更多的环顾之后,并且在IRC中聊了一下,似乎我应该做的是把get参数远离用户,包含支付信息,就是将它们作为post发送。我被告知你应该能够使用一些JS,也可能是jQuery。问题仍然存在,但现在仍然有点复杂。在javascript的帮助下,如何在django中创建帖子重定向?
第二编辑
解决方法
我建议采用以下方法。在您的Django视图/模板返回表单到浏览器中,您要作为隐藏表单元素发布的所有参数。一旦表单加载,JavaScript将提交(POST)表单到任何你想要的地方。
视图:
from django.shortcuts import render_to_response def view(request): return render_to_response('test.html',{ 'foo': 123,'bar': 456 })
模板:
<html> <head> <title>test</title> <script type="text/javascript"> function load() { window.document.test.submit(); return; } </script> </head> <body onload="load()"> <form name="test" method="post" action="http://www.example.com"> <input type="hidden" name="foo" value={{ foo }} /> <input type="hidden" name="bar" value={{ bar }} /> </form> </body> </html>