django - جعل طلب هتب مع جانغو و ديسيرياليزينغ الإخراج




http request (2)

لذلك أنا تقريبا جديدة تماما لتطوير شبكة الإنترنت ككل، ولكن تم طرحها في مشروع جانبي باستخدام جانغو لسحب وتحليل البيانات من خدمة الإنترنت، وأنا تكافح من أجل فهم بالضبط كيف تعمل الأشياء، حتى أثناء النظر من خلال دجانغو كابل بيانات.

في جانغو، لدي كل شيء اقامة والعمل على مستوى أساسي (باستخدام قوالب، يتم عرض صفحة قائلا "مرحبا العالم").

الآن من أجل سحب البيانات من خدمة الويب، أحتاج إلى تقديم طلب إلى عنوان ورل بالتنسيق التالي:

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

في المثال فب المقدمة، يفعلون ذلك باستخدام كورل، ثم json_decode.

ماذا أفعل للحصول على وظائف مماثلة من جانغو؟ شكرا مقدما!


في حين أنه سيكون من الممكن لتنفيذ هذا النوع من الوظائف في جانغو، وهناك مجموعة من الخطوات الوسيطة المعنية. أولا، يجب عليك التفكير فقط في كيفية استخدام بيثون للاستعلام عن خدمة الويب. لهذا، أود أن أوصي بشدة وحدة الطلبات ، وهو أمر عظيم لهذا الغرض.


يمكنك استخدام urllib2 و json وحدات قياسية (أو، بدلا من ذلك، طلبات مكتبة ممتازة و 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)

إذا كنت تريد ذلك على صفحة، تريد ذلك في طريقة عرض ، والتي سوف تحتاج إلى ربط مع رابط .

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)

بالطبع، أنا لا أعرف كيف أردت البيانات الخاصة بك ليتم عرضها، لذلك أنا فقط تسلسل ذلك مرة أخرى :)





request