Django 模板如何使用标签和模板过滤器从 json 字典中获取数据
Django templates how to use tags and template filters to get data from json dict
我有字典,可以在这里看到 https://jsoneditoronline.org/?id=a570322381fc45919a7a03ebad78cbee
但从我目前阅读的内容来看,它更像是一个听写列表。我正在尝试显示来自标题、描述、作者和类别等字典的数据,但模板标签没有显示我想要的内容,尝试使用循环但无法访问它
试过这样的循环
{% for items in books %}
{% for volumeInfo in items %}
{{ volumeInfo.title }}
{% endfor %}
{% endfor %}
唯一有效的是 {{ books.items }} 但它给了我全部 json 但我只需要很少的值。
def api(request):
books = {}
if 'books' in request.GET:
books = request.GET['books']
url = 'https://www.googleapis.com/books/v1/volumes?q=%s' % books
response = requests.get(url)
books = response.json()
print(type(books))
with open("data_file.json", "w") as write_file:
json.dump(books, write_file)
return render(request, 'books/api.html', {'books': books})
{% load get_item from template_filters %}
{% block content %}
<h2>Google API</h2>
<form method="get">
<input type="text" name="book">
<button type="submit">search on google books api</button>
</form>
{% if books %}
<p>
{% for items in books %}
{% for volumeInfo in items %}
{{ volumeInfo.title }}
{% endfor %}
{% endfor %}
{{ books.items }}
</p>
{% endif %}
{% endblock %}
您需要遵循现有的 JSON 结构。总而言之,数据如下所示:
{
"items": [
{
"volumeInfo": {
"title": "Hobbit czyli Tam i z powrotem"
}
}
]
}
因此,在模板中:
{% for item in books.items %}
{{ item.volumeInfo.title }}
{% endfor %}
我有字典,可以在这里看到 https://jsoneditoronline.org/?id=a570322381fc45919a7a03ebad78cbee
但从我目前阅读的内容来看,它更像是一个听写列表。我正在尝试显示来自标题、描述、作者和类别等字典的数据,但模板标签没有显示我想要的内容,尝试使用循环但无法访问它
试过这样的循环
{% for items in books %}
{% for volumeInfo in items %}
{{ volumeInfo.title }}
{% endfor %}
{% endfor %}
唯一有效的是 {{ books.items }} 但它给了我全部 json 但我只需要很少的值。
def api(request):
books = {}
if 'books' in request.GET:
books = request.GET['books']
url = 'https://www.googleapis.com/books/v1/volumes?q=%s' % books
response = requests.get(url)
books = response.json()
print(type(books))
with open("data_file.json", "w") as write_file:
json.dump(books, write_file)
return render(request, 'books/api.html', {'books': books})
{% load get_item from template_filters %}
{% block content %}
<h2>Google API</h2>
<form method="get">
<input type="text" name="book">
<button type="submit">search on google books api</button>
</form>
{% if books %}
<p>
{% for items in books %}
{% for volumeInfo in items %}
{{ volumeInfo.title }}
{% endfor %}
{% endfor %}
{{ books.items }}
</p>
{% endif %}
{% endblock %}
您需要遵循现有的 JSON 结构。总而言之,数据如下所示:
{
"items": [
{
"volumeInfo": {
"title": "Hobbit czyli Tam i z powrotem"
}
}
]
}
因此,在模板中:
{% for item in books.items %}
{{ item.volumeInfo.title }}
{% endfor %}