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

标签 python django for-loop dictionary django-templates

我有一本名为 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/

相关文章:

c++ - 搜索 vector 中的一系列记录

java - 在java中将索引附加到多维数组

python - Pandas : Map the list value in a column to dictionary based on group

python - 按词典顺序排列的下一个单词

python - libmysqlclient.16.dylib 在哪里

python - 当前交易发生错误。在 'atomic' block 结束之前不能执行查询

javascript - 不要在循环错误中创建函数,我无法修复

python - 如何使用 Python 将二维数组中的列分配给某个重复范围?

python - 适合 WCS 来治愈

django - 如何清除/维护 django-sentry 数据库?