外部的Django重定向与POST参数(External django redirect with

2019-07-03 23:10发布

我试图创造一个Django视图中的重定向,从而与请求一些GET参数外部URL。 后做一些环顾四周,一些试图左右,看来我已经打了一个路障。

所以,我的观点看起来是这样的

def view(request):
    data = get.data(request)
    if something in data:
        return HttpResponseRedirect('example.com')

这是据我能够得到。 我知道你在请求URL可以指定一些获得参数是这样的:

...
return HttpResponseRedirect('example.com?name=smith&color=brown')

然而,由于某些数据是敏感的,我不希望它在url中结束。 因为它是一个外部链接,我不能使用接受意见参数的重定向()的快捷方式。 所以请告诉,一个人如何完成这样的任务呢?

编辑

已经做了一段更环顾四周,并在聊IRC了一下,似乎是我应该做的,以保持GET参数从用户望而却步,包含付款信息,就是送他们作为后代替。 有人告诉我,你应该能够通过使用一些JS以及可能jQuery来做到这一点。 现在的问题仍然是虽然有点现在变得更复杂。 如何将一个去创造后在Django重定向用JavaScript的帮助吗?

第二次编辑

好像我一直在误导。 感谢名单来清除该了重定向协议DR。 看起来像我在使用重定向来解决这个问题的尝试已经持续下跌了错误的道路。

Answer 1:

我建议以下办法。 在你的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>


Answer 2:

GET参数总是在URL中去,这是什么使得他们获得的参数。

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



Answer 3:

我不同意丹尼尔,还有周围只有GET PARAMS重定向的HTTP限制的方式。 我在想什么的是:

  1. 重定向到一个GET目的地,你想要的PARAMS。
  2. 在GET页面,设置与PARAMS形式转发你
  3. 自动提交表单。

这就是大多数文件下载服务做的,有时甚至是付款页面(Paypal和这样)。 这的确是一个有点难看(1更多跳),但有它自己的好处。



文章来源: External django redirect with POST parameters