2012-07-15 57 views
0

我有一個網站在Django上運行。當用戶點擊提交按鈕時,我需要將數據發送到運行在不同域上的服務器,然後顯示返回給用戶的數據。由於跨域問題,我無法使用Ajax請求。許多消息來源表明,我應該使用Javascript發送到我自己的服務器,然後發送到外部服務器,但我不明白我會如何實現。如何從我的Django網站向另一臺服務器發出POST請求?

回答

2

如果您提交表單最終需要轉到的URL,則可以在服務器端執行處理。所以說,你在表單中,像這樣的隱藏字段:

<input type="hidden" name="form_urlfield" value="http://anotherwebsite.com/wheretheformneedstogo"> 

基本上,你可以這樣做:

 $.ajax({ 
    type: "POST", 
    url: 'http://somewhereonthesameserver.com/submit-form', 
    data: $('#ajax-form').serialize(), 
    success: function(data){...}, 
      }); 

然後,在對應於您提交表單URL的觀點:

import urllib2 
data = urllib2.urlopen(request.POST['form_urlfield'], the_post_data) 
//the_post_data is the data that you want to post to the other server.. 
// do something with the returned data 
// return a JSON/Other response 

此外,請確保您在Django中啓用CSRF-Ajax功能。 https://docs.djangoproject.com/en/1.4/ref/contrib/csrf/#csrf-ajax

以上所有僅僅是僞代碼(我只是在這裏寫出來的),但它應該給你一個關於如何繼續的想法。希望這有助於:)

0

您可以從您的django應用程序發出http請求。

  1. 用戶提交的數據從HTML表單的Django
  2. 使用urllib的發送數據,並從其他域
  3. 響應相應的響應數據提交給用戶。
0

由Ashray和dm03514提供的答案是正確的。但我可能會建議看看使用Requests而不是urllib2進行服務器端HTTP處理。

相關問題