遍历 Django 模板中的 JSON 数据
Iterate through JSON data in Django template
我在迭代某些 JSON 数据时遇到了问题,这些数据是我设法导入到我的 Django Wagtail 项目中的。我想在从此处提取的网站上列出旅行建议:http://data.international.gc.ca/travel-voyage/index-updated.json
我可以像这样在我的模型中做到这一点:
import requests
def get_context(self, request):
response = requests.get('http://data.international.gc.ca/travel-voyage/index-updated.json')
json_response = response.json()
data = json_response['data']
context = super(TravelAdvisoriesPage, self).get_context(request)
context['data'] = data
return context
我现在不确定如何将数据导入我的模板。我可以使用 {{ data }}
.
提取所有数据
但是如何从 JSON 数据中提取特定项目?我想获取英文和法文名称、url-slug、advisory-text 等。所有这些都嵌套在 JSON 结构中的 data > country code > language > item
中。
我试过类似的方法:
{% for country in data %}
{{ data[country].eng.name }}<br />
{% endfor %}
这给我带来了 Could not parse the remainder: '[country].eng.name' from 'data[country].eng.name'
之类的错误。你如何在模板中获取这些?
Django 模板有自己的语法,不同于 Python 语法。您在 {{ data[country].eng.name }}
中使用的括号表示法是不允许的。使用 items 字典函数迭代字典键和字典值:
{% for country_key, country_value in data.items %}
{{ country_value.eng.name }}<br />
{% endfor %}
我在迭代某些 JSON 数据时遇到了问题,这些数据是我设法导入到我的 Django Wagtail 项目中的。我想在从此处提取的网站上列出旅行建议:http://data.international.gc.ca/travel-voyage/index-updated.json
我可以像这样在我的模型中做到这一点:
import requests
def get_context(self, request):
response = requests.get('http://data.international.gc.ca/travel-voyage/index-updated.json')
json_response = response.json()
data = json_response['data']
context = super(TravelAdvisoriesPage, self).get_context(request)
context['data'] = data
return context
我现在不确定如何将数据导入我的模板。我可以使用 {{ data }}
.
但是如何从 JSON 数据中提取特定项目?我想获取英文和法文名称、url-slug、advisory-text 等。所有这些都嵌套在 JSON 结构中的 data > country code > language > item
中。
我试过类似的方法:
{% for country in data %}
{{ data[country].eng.name }}<br />
{% endfor %}
这给我带来了 Could not parse the remainder: '[country].eng.name' from 'data[country].eng.name'
之类的错误。你如何在模板中获取这些?
Django 模板有自己的语法,不同于 Python 语法。您在 {{ data[country].eng.name }}
中使用的括号表示法是不允许的。使用 items 字典函数迭代字典键和字典值:
{% for country_key, country_value in data.items %}
{{ country_value.eng.name }}<br />
{% endfor %}