【发布时间】:2018-09-16 10:22:12
【问题描述】:
我目前正在使用 django 网络框架创建一个 python 应用程序,它允许用户查询外部 API 以获取有关食物营养(例如卡路里、脂肪)的信息。目前,当用户在网页的搜索栏中输入食物时,API会被查询并显示在终端中。我正在尝试在网页上显示信息,但无法呈现数据。
form.py
class NutritionForm(forms.Form):
food = forms.CharField(max_length=100000)
def search(self):
# result = {}
food = self.cleaned_data['food']
headers = {
'x-app-id': "ff0ccea8",
'x-app-key': "605660a17994344157a78f518a111eda",
'x-remote-user-id': "7a43c5ba-50e7-44fb-b2b4-bbd1b7d22632",
'Content-Type': "application/x-www-form-urlencoded",
}
url = 'https://trackapi.nutritionix.com/v2/natural/nutrients'
body = {
'query': food,
'timezone': 'US/Eastern',
}
response = requests.request("POST", url, data=body, headers=headers)
data = response.json()
print ('food name: ', data['foods'][0]['food_name'])
print ('food calories: ', data['foods'][0]['nf_calories'])
print ('food protein: ', data['foods'][0]['nf_protein'])
print ('food fats: ', data['foods'][0]['nf_total_fat'])
views.py
def nutritionix(request):
search_result = {}
if 'food' in request.POST:
form = NutritionForm(request.POST)
if form.is_valid():
search_result = form.search()
else:
form = NutritionForm()
return render(request, 'nutrition/nutrition.html', {'form': form, 'search_results': search_result})
这是我用来尝试显示信息的 html 页面。但是,当我运行搜索时,API 被查询,显示在终端中,但没有显示在网页上。
html
{% block content %}
<h2>Nutritionix API</h2>
<form action="" method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Search Food info</button>
</form>
{% block body %}
<div class="container">
<p>Food name: {{ food }}</p>
</div>
{% endblock %}
{% endblock %}
它没有打印到网页上,我这样做是否正确?
【问题讨论】: