7

所以我对整个 Web 开发几乎是全新的,但是我被投入到一个使用 Django 来从 Web 服务中提取和解析数据的辅助项目中,并且即使在浏览 Django 时也很难准确地理解事情是如何工作的文档。

在 Django 中,我在基本级别上设置并工作(使用模板,显示的页面显示“Hello World”)。

现在为了从 web 服务中提取数据,我需要向以下格式的 URL 发出请求:

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

在提供的 PHP 示例中,他们使用 cURL 执行此操作,然后使用 json_decode。

我会怎么做才能从 Django 中获得类似的功能?提前致谢!

4

2 回答 2

11

您将使用urllib2json标准模块(或者,优秀的库请求json):

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)

 

如果您希望它出现在页面上,则希望它出现在视图中,您需要将其与 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)

当然,我不知道你希望你的数据如何显示,所以我只是再次序列化它:)

于 2013-01-03T16:59:26.750 回答
0

虽然在 Django 中实现这种功能是可能的,但涉及到一堆中间步骤。首先,您应该考虑如何使用 Python 来查询 Web 服务。为此,我强烈推荐Requests 模块,它对此非常有用。

于 2013-01-03T17:00:50.287 回答