2016-05-30 95 views
4

我有一个带有列表的字典,我试图在我的Django模板中遍历它。如何通过django模板中的列表迭代字典?

这是它的外观我的字典里:

{u'Canada': [u'Saskatchewan', u'Nunavut', u'Nova Scotia/Nouvelle-\xc9cosse', u'Prince Edward Island/\xcele-du-Prince-\xc9douard', u'Northwest Territories/Territoires du Nord-Ouest', u'Ontario', u'Alberta', u'New Brunswick/Nouveau-Brunswick', u'Newfoundland and Labrador/Terre-Neuve-et-Labrador', u'British Columbia/Colombie-Britannique', u'Manitoba', u'Yukon', u'Quebec/Qu\xe9bec'], u'Sao Tome and Principe': [u'Principe', u'Sao Tome'], 

的问题是如何通过这本词典给我的模板,而不必Django的转义字符并遍历所有的值,每一个国家。

现在我通过它在上下文词典:

ctx['regions'] = cntr_rgns 

,然后我试图重复其在模板为:

{% if regions %} 
    {% for cntr, rgn in regions.items %} 
     <option value={{ region }}>{{ rgn }}</option> 
    {% endfor %} 
{% endif %} 

可是这样我只是得到全阵列式不每个单一元素。

回答

5

你应该在你的情况下,使用嵌套循环:

{% for cntr, rgn in regions.items %} 
    {% for r in rgn %} 
    <option value="{{ r }}">{{ r }}</option> 
    {% endfor %} 
{% endfor %} 
+0

谢谢。它的工作原理就是我所需要的。不知怎的,它回答了这个问题的第一部分:“如何将这个字典传递给我的模板,而不用让django逃离字符并迭代每个国家的所有值。”但我不明白! :) – user1919

+1

@ user1919如果你指的是诸如'\ xc9c'这样的部分,它们就是unicode转义符,并且在模板中打印时看起来会很好。 – Selcuk