我有一个叫做类别的字典.我只想在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 举报,一经查实,本站将立刻删除。