首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >带有POST参数的外部django重定向

带有POST参数的外部django重定向
EN

Stack Overflow用户
提问于 2009-08-28 09:17:22
回答 3查看 18.1K关注 0票数 18

我正尝试在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。这个问题仍然存在,尽管现在有点复杂。在django中如何在javascript的帮助下创建post重定向?

第二次编辑

看起来我被误导了。谢谢你用重定向协议澄清了这一点,DR.看起来我在尝试使用重定向来解决这个问题时走错了路。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-08-28 13:53:47

我建议使用以下方法。在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>
票数 20
EN

Stack Overflow用户

发布于 2009-08-28 09:37:28

GET参数总是放在URL中,这就是它们获取参数的原因。

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

票数 9
EN

Stack Overflow用户

发布于 2010-11-26 19:58:02

我不同意Daniel的观点,有一种方法可以绕过HTTP的限制,即只使用get params进行重定向。我所想的是:

  1. 重定向到具有所需参数的获取目标。
  2. 在获取页上,使用您转发的参数设置表单
  3. 自动提交表单。

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1345892

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档