[英]How can I Iterate through the same dictionary multiple times in a Django template?
我有一個叫做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
一個循環first
工作正常。 但是當談到div second
個循環時,它沒有給出任何結果。 另外,div lenDict
下的代碼也沒有給出結果。
Django模板是否有任何限制,我們不能兩次迭代相同的字典? 任何幫助將不勝感激。
要在Python中迭代整個dict
,您應該使用.iteritems()
。 它在dict的(key, value)
對上創建一個新的迭代器。 如果您想要一個項目list
,也可以使用items()
。
<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>
請注意,你的dict將是無序的。 如果要保留密鑰的順序,請使用OrderedDict
。
所以我覺得這很有效。 我認為你的問題是facet.category。 這是fk嗎? 因為如果這是一個fk if語句應該是
{% if category.id == facet.category %}
在python迭代器中不需要重置,所以我認為你不必在模板中重置迭代器。 注意:我會留下這是一個評論,但代表不夠高。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.