使用POST参数进行外部django重定向

我正在尝试在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中创建post重定向?

第二次编辑

好像我被误导了。 Thanx用于通过重定向协议DR清除它。 在我尝试使用重定向来解决此问题时,我似乎一直走错了路。

我建议采用以下方法。 在您的Django视图/模板返回表单中,浏览器中包含您要作为隐藏表单元素发布的所有参数。 只要表单加载,JavaScript就会将(POST)表单提交到您想要的位置。

视图:

 from django.shortcuts import render_to_response def view(request): return render_to_response('test.html', { 'foo': 123, 'bar': 456 }) 

模板:

   test    

GET参数总是在URL中,这就是使它们成为GET参数的原因。

使用POST参数(不在URL中)不能重定向 – 这是HTTP的限制,而不是Django。

我不同意Daniel,有一种方法可以解决重定向的HTTP限制,只能使用para params。 我在想的是:

  1. 使用您想要的参数重定向到GET目的地。
  2. 在GET页面上,使用您转发的参数设置表单
  3. 自动提交表单。

这就是大多数文件下载服务所做的,有时甚至是支付页面(Paypal等)。 它确实有点难看(又多一跳)但它有自己的好处。