簡體   English   中英

使用POST參數進行外部django重定向

[英]External django redirect with POST parameters

我正在嘗試在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,因此我無法使用接受視圖參數的redirect()快捷方式。 所以祈禱告訴,一個人如何完成這樣的任務?

編輯

在做了一些更多的環顧四周,並在IRC中聊了一下之后,似乎我應該做的是,保持get參數遠離用戶,包含付款信息,就是將它們作為帖子發送。 我被告知你應該能夠通過使用一些JS來實現它,可能是jQuery。 現在這個問題仍然有點復雜。 如何在javascript的幫助下在django中創建帖子重定向?

第二次編輯

好像我被誤導了。 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 })

模板:

<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>

GET參數總是在URL中,這就是使它們成為GET參數的原因。

使用POST參數(不在URL中)不能重定向 - 這是HTTP的限制,而不是Django。

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

  1. 使用您想要的參數重定向到GET目的地。
  2. 在GET頁面上,使用您轉發的參數設置表單
  3. 自動提交表單。

這就是大多數文件下載服務所做的,有時甚至是支付頁面(Paypal等)。 它確實有點難看(1跳)但它有自己的好處。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM