Django模板提供内置标记,cycle
用于在模板中的不同点(或模板中的循环)之间交替切换多个值,但是当在cycle
s定义之外的范围内访问此标记时,此标记不会重置.也就是说,如果你在你的模板两个或多个列表,所有的行,你想它的使用一些CSS定义odd
和even
,列表的第一行会拿起其中最后一个离开,而不是用新的迭代来自选择(odd
和even
)
例如,在下面的代码中,如果第一个博客的条目数量为奇数,那么第二个博客中的第一个条目将even
在我希望它开始时开始odd
.
{% for blog in blogs %} {% for entry in blog.entries %}{{entry.text}}{% endfor %} {% endfor %}
我尝试通过修补resetcycle
此处提供的标记来避免这种情况:
Django票证:周期标记应在超出范围后重置
无济于事.(该代码对我不起作用.)
我也尝试将我的内部循环移动到自定义标记中,但这也不起作用,可能是因为编译/渲染循环将循环移回外部循环?(不管为什么,它对我不起作用.)
我怎样才能完成这个简单的任务!?我不希望在我的视图中使用预先编译的信息创建数据结构; 这似乎没必要.提前致谢.
最简单的解决方法(直到重置补丁修复并应用)是使用带有forloop.counter的内置"divisibleby"过滤器:
{% for entry in blog.entries %}{{ entry.text }}{% endfor %}
更冗长,但不难理解,它很有效.
https://docs.djangoproject.com/en/1.8/ref/templates/builtins/#cycle
{% for o in some_list %}... {% endfor %}