2017-09-15 75 views
0

我在遍历一些JSON数据时遇到了问题,这些JSON数据是我设法导入到我的Django Wagtail项目中的。我想列出都是从这里拉在一个网站上的旅游警告:http://data.international.gc.ca/travel-voyage/index-updated.json通过Django模板中的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,咨询文本等等。所有这些都嵌在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'错误。你如何在模板中抓住这些?

回答

2

Django模板具有与Python语法不同的语法。不允许在{{ data[country].eng.name }}中使用的括号符号。使用项词典函数来迭代字典密钥和字典值:

{% for country_key, country_value in data.items %} 
    {{ country_value.eng.name }}<br /> 
{% endfor %} 
+0

谢谢!这确实拉了名字。尽管如此,它似乎还有一个问题仍然与连字符项目。 'friendly-date'不起作用,因为它不能解析剩余'日期'。 – Kim

+0

不幸的是,这不是一个简单的解决方案。最好的解决方案可能是[自定义模板标签](https://stackoverflow.com/questions/8252387/how-do-i-access-dictionary-keys-that-c​​ontain-hyphens-from-within-a-django -templa)。 –