微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我有一个叫做类别的字典.我只想在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下的第一个循环首先工作正常.
但是当谈到div第二个循环时,它没有给出任何结果.
另外,div lenDict下的代码也没有给出结果.

Django模板是否有任何限制,我们不能两次迭代相同的字典?
任何帮助将不胜感激.

解决方法

要在Python中迭代整个dict,你应该使用 .iteritems().它在dict的(key,value)对上创建一个新的迭代器.如果您想要一个项目列表,也可以使用 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.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐