2013-10-31 74 views
0

我試圖從我的django模板傳遞一些參數給kaltura。在Django模板中向外部服務器/ url發出POST請求

這是我迄今爲止所做的。

 <form id="kalturarequest" action="www.kaltura.com/api_v3/" method="post" enctype="multipart/form-data"> 
     {% csrf_token %} 
      <input type="hidden" id="ks" name="ks" value=""/> 
      <input type="hidden" id="service" name="service" value="uploadToken" /> 
      <input type="hidden" id="action" name="action" value="upload"/> 
      <input type="hidden" id="uploadTokenId" name="uploadTokenId" value=""/>   
      <input type="file" name="fileData" id="fileData"/>  
      <input type="submit" onclick="return Checkfiles();" class="btn-primary upload-btn-height" id="uploadBtnNew" value="Submit" /> 
     </form> 

但不是發佈形式www.kaltura.com/api_v3/地址,這是發佈形式與mysite本身。

請幫助我,我怎樣才能使它工作,所以這種形式應該張貼到www.kaltura.com/api_v3/的代替L- ocalhost:8000/www.kaltura.com/api_v3/

+0

可能重複的[HTML表單POST跨域](http://stackoverflow.com/questions/8497609/html-form-post-cross-domain) – llazzaro

+0

我們可以做到這一點,而無需通過協議? – RnD

+0

您使用簡單的html發佈請求將郵寄請求傳遞至www.kaltura.com/api_v3/。我不認爲這是好的方法。所有人都可以通過在瀏覽器中看到源代碼來查看您的tokenId,服務名稱。您是否需要保護表單數據? –

回答

1

你忘了協議(HTTP或HTTPS可能?):

<form id="kalturarequest" action="http://www.kaltura.com/api_v3/" method="post" enctype="multipart/form-data"> 
+0

同意但我們可以做沒有協議? – RnD

+0

如果你省略了協議,http-server會認爲它是本地文檔。從當前路徑中,它將查找名爲「www.kaltura.com」的目錄和子目錄「api_v3」,以將表單發佈到其索引文件。所以是的,如果你想與外部服務器通信,你必須指定協議。 – manonthemat

2

爲了使這項工作,並省略協議的地方兩條斜線的開頭:

//www.kaltura.com/api_v3/ 

現在的形式提交的位置是正確的(它會使用與包含表單的頁面的url相同的協議)。

如果你很好奇,看看這裏:http://tools.ietf.org/html/rfc3986#section-3

0

如果要創建一個形式,而不是在Django驗證它那麼就沒有必要列入{%csrf_token%}。

我的建議是建立一個Django的形式,驗證用戶輸入您的視圖,然後使用像requests庫(或蟒蛇library Kaltura provides),使API請求。

相關問題