簡體   English   中英

如何在Django模板中多次迭代同一個字典?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM