Django模板中行多于一组的备用行着色
Django模板提供了内置标记,cycle
用于在模板中不同点(或模板中的for循环)之间的多个值之间交替,但是当在cycles定义之外的范围中访问该标记时,该标记不会重置。即,如果你的模板中有两个或多个列表,则你要使用某些CSS定义odd
和所有even
列表的行,列表的第一行将在最后一个保留的地方开始,而不是重新进行迭代从(odd
和even
)中选择
例如,在下面的代码中,如果第一个博客的条目数为奇数,则第二个博客中的第一个条目将以开头even
,而我希望它以开头odd
。
{% for blog in blogs %} {% for entry in blog.entries %}
<div class="{% cycle 'odd' 'even' %}" id="{{entry.id}}">
{{entry.text}}
</div>
{% endfor %}
{% endfor %}
我尝试通过修补resetcycle
此处提供的标签来消除这种情况:
无济于事。(该代码对我不起作用。)
我也尝试过将内部循环移到自定义标记中,但这也没有用,也许是因为编译/渲染周期将循环移回了外部循环?(不管为什么,它对我都不起作用。)
我如何完成这个简单的任务!我不希望在此视图中使用预编译的信息来创建数据结构;似乎没有必要。提前致谢。
回答:
最简单的解决方法(直到修复并应用resetcycle补丁为止)是将内置的“ divisibleby”过滤器与forloop.counter结合使用:
{% for entry in blog.entries %} <div class="{% if forloop.counter|divisibleby:2 %}even{% else %}odd{% endif %}" id="{{ entry.id }}">
{{ entry.text }}
</div>
{% endfor %}
有点冗长,但不难理解,效果很好。
以上是 Django模板中行多于一组的备用行着色 的全部内容, 来源链接: utcz.com/qa/405586.html