我有一本名为 categories
的字典。我只想在 Django 模板中遍历该字典两次。下面是我的代码:
<div class="first">
{% for category in categories %}
<li class="{{category.name}}"><a href="#{{category.name}}">{{category.name}</a></li>
{% endfor %}
</div>
<div class="lenDict">
<h2>{{categories|length}}</h2>
</div>
<div class="second">
{% for category in categories %}
{% for facet in allFacets %}
{% if category.name == facet.category %}
<p id="{{facet.id}}">{{facet.facet}}</p>
{% endif %}
{% endfor %}
{% endfor %}
</div>
当我这样做时,div first
下的第一个循环工作正常。
但是当涉及到 div second
下的第二个循环时,它没有给出任何结果。
此外,div lenDict
下的代码也没有给出任何结果。
Django 模板是否有任何限制,我们不能对同一个字典进行两次迭代? 任何帮助将不胜感激。
最佳答案
要在 Python 中遍历整个 dict
,您应该使用 .iteritems()
.它在字典的 (key, value)
对上创建一个新的迭代器。您也可以使用 items()
如果您想要一个 list
项目。
<div class="first">
{% for key, value in categories.iteritems() %}
<li class="{{ key }}"><a href="#{{ key }}">{{ value }}</a></li>
{% endfor %}
</div>
<div class="lenDict">
<h2>{{ categories|length }}</h2>
</div>
<div class="second">
{% for key, value in categories.iteritems() %}
{% for facet in allFacets %}
{% if key == facet.category %}
<p id="{{facet.id}}">{{facet.facet}}</p>
{% endif %}
{% endfor %}
{% endfor %}
</div>
请注意,您的字典将是无序的。如果要保留键的顺序,请使用 OrderedDict
.
关于python - 如何在 Django 模板中多次迭代同一个字典?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22014672/