Django:将 api 的 json 传递给模板以在 table 中使用
Django : Passing api's json to template for use in a table
目前我的 views.py 文件中有搜索功能 json_search,如下所示:
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"),
)
我想要做的是在 table 中填充字段名称:和 phone:在 api 的 json 中,我目前有 table 设置:
<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 但是我现在被困在如何解决这个问题上。我觉得我必须改变我的搜索功能,但我不知道该怎么做。
被困了一段时间所以任何帮助将不胜感激。
终于设法让它工作我不得不在我的 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>
给出想要的结果:)
希望遇到类似问题的任何人都会觉得这很有帮助
目前我的 views.py 文件中有搜索功能 json_search,如下所示:
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"),
)
我想要做的是在 table 中填充字段名称:和 phone:在 api 的 json 中,我目前有 table 设置:
<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 但是我现在被困在如何解决这个问题上。我觉得我必须改变我的搜索功能,但我不知道该怎么做。
被困了一段时间所以任何帮助将不胜感激。
终于设法让它工作我不得不在我的 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>
给出想要的结果:)
希望遇到类似问题的任何人都会觉得这很有帮助