2013-01-03 46 views
4

因此,我幾乎全新開發整個Web開發項目,但已被引入使用Django從Web服務中提取和解析數據的副項目,並且正在努力理解即使在查看Django文檔時,也是如何工作的。使用Django進行HTTP請求並反序列化輸出

在Django中,我已經完成了基本級別的設置和工作(使用模板,頁面顯示爲「Hello World」)。

現在,爲了從WebService提取數據,我需要做以下格式的URL的請求:

http://wbsapi.withings.net/[service_name]?action=[action_name]&[parameters] 

在提供的PHP例如,他們做到這一點使用捲曲,然後json_decode。

我該如何從Django中獲得類似的功能?提前致謝!

回答

7

你會使用urllib2json標準模塊(或者,在優庫requestsjson):

import urllib2 
import json 

url = 'http://wbsapi.withings.net/[service_name]?action=[action_name]&[parameters]' 
serialized_data = urllib2.urlopen(url).read() 

data = json.loads(serialized_data) 

 

如果你想它的網頁上,你想讓它在view,您將需要associate with an url

urls.py將包含類似

from django.conf.urls import patterns, url, include 

urlpatterns = patterns('', 
    (r'^get_data/$', 'myapp.views.get_data'), 
) 

而且你myapp/views.py將包含類似

from django.http import HttpResponse 
import urllib2 
import json 

def get_data(request): 
    url = 'http://wbsapi.withings.net/[service_name]?action=[action_name]&[parameters]' 
    serialized_data = urllib2.urlopen(url).read() 

    data = json.loads(serialized_data) 

    html = "<html><body><pre>Data: %s.</pre></body></html>" % json.dumps(data, indent=2) 

    return HttpResponse(html) 

當然,我不知道你是怎麼想你要顯示的數據,所以我只是再次序列化:)

+0

我在哪裏可以把它放在應用程序中?會有它自己的python文件嗎?它會去views.py?對不起,我有這麼多問題!謝謝! – elykl33t

+0

你想達到什麼目的? –

+0

現在,非常基本。我希望能夠發送請求,獲取json數據,反序列化並將其顯示在頁面上。 – elykl33t

0

儘管在Django中可以實現這種功能,但還是有一堆int涉及的中介步驟。首先,您應該考慮如何使用Python來查詢Web服務。爲此,我強烈建議the Requests module,這對此很有幫助。

相關問題