2015-04-23 33 views
1

目前,我有我的搜索功能json_search在我的views.py文件,像這樣:Django的:傳遞API的JSON到模板用在表

def json_search(request): 
    query = request.GET.get('query') 
    api_key = locu_api 
    url = 'https://api.locu.com/v1_0/venue/search/?api_key=' + api_key 
    locality = query.replace(' ', '%20') 
    final_url = url + "&locality=" + locality + "&category=restaurant" 
    json_obj = urllib2.urlopen(final_url) 
    data = json.load(json_obj) 
    json_data = {} 
    return HttpResponse(json.dumps(data), content_type='application/json') 

我目前通過我主頁上的表單調用它使用URL這樣的:

urlpatterns = patterns(
    "", 
    url(r"^$", TemplateView.as_view(template_name="homepage.html"), name="home"), 
    url(r"^admin/", include(admin.site.urls)), 
    url(r"^account/", include("account.urls")), 
    url(r"^loc_search/$", 'project_name.views.json_search', name="search"), 
) 

我所希望做的是填充表格與字段名稱:和電話:API的JSON內我公司目前已在臺設立:

<body> 
<table data-toggle="table" data-url="{% url 'search' %}" data-cache="false" data-height="299"> 
<thead> 
    <tr> 
     <th data-field="id">Item ID</th> 
     <th data-field="name">Name</th> 
     <th data-field="phone">Phone</th> 
    </tr> 
</thead> 

我知道目前它只是返回的HttpResponse和傾倒JSON文件,所以我得到了一個空白的HTML頁面是這樣的:

{"meta": {"limit": 25, "cache-expiry": 3600}, "objects": [{"name": "Pizza Hut delivery", "locality": "Norwich", "website_url": null, "cuisines": [], "region": "Norfolk", "long": 1.27727303158181, "phone": "01603 488900", "postal_code": null, "categories": ["other", "restaurant"], "has_menu": false, "country": "United Kingdom", "lat": 52.6564553358682, "id": "00388fe53e4c9f5e897d", "street_address": null, "resource_uri": "/v1_0/venue/00388fe53e4c9f5e897d/"}, {"name": "Thai Lanna", "locality": "Norwich", "website_url": "http://www.thailannanorwich.co.uk", "cuisines": [], "region": "Norfolk", "long": 1.2788060400004, "phone": "01603 625087", "postal_code": "NR2 1AQ", "categories": ["other", "restaurant"], "has_menu": true, "country": "United Kingdom", "lat": 52.6273547550005, "id": "0452369b7789e15bb624", "street_address": "24 Bridewell Alley", "resource_uri": "/v1 

我只是想知道我究竟是如何通過JSON數據所以我可以縮小搜索範圍到我想要的領域,我嘗試使用rendor_to_response以及JsonResponse,但我堅持現在只是如何去做這件事。我覺得我必須改變我的搜索功能,但我不知道如何。

被卡住了一段時間,所以任何幫助將非常感激。

+0

JSON字符串不是一個法律問題。 – shellbye

回答

4

終於設法得到它的工作,我有我的views.py:

from django.shortcuts import render 

當時我能夠改變我的功能,以滿足通過解析對象數據到我的模板,像這樣內導入:

def json_search(request): 
query = request.GET.get('query') 
api_key = locu_api 
url = 'https://api.locu.com/v1_0/venue/search/?api_key=' + api_key 
locality = query.replace(' ', '%20') 
final_url = url + "&locality=" + locality + "&category=restaurant" 
json_obj = urllib2.urlopen(final_url) 
decoded_data = json.load(json_obj) 
return render(request, 'loc_search.html', 
        {'objects': decoded_data['objects']}) 

,然後能夠把它叫做我的形式提交這樣的後:

<ul> 
{% for obj in objects %} 
    <li>{{ obj.name }} - {{ obj.locality }}</li> 
{% endfor %} 
</ul> 

給出了期望的結果:)

enter image description here

有類似的問題,希望有人會發現你給這個有用

+0

感謝這幫了我 –

+0

我得到keyerror對象,可能是什麼原因 –