2017-09-15 77 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)。 –