【发布时间】:2010-10-02 07:55:29
【问题描述】:
Django 模板提供了内置标签 cycle 用于在模板中不同点的多个值之间交替(或模板中的 for 循环),但是当在 cycle 之外的范围内访问此标签时,它不会重置s 定义。即,如果您的模板中有两个或多个列表,您希望使用一些 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 标签来避免这种情况:
Django ticket: Cycle tag should reset after it steps out of scope
无济于事。 (代码对我不起作用。)
我也尝试将我的内部循环移动到自定义标记中,但这也不起作用,可能是因为编译/渲染循环将循环移回了外部循环? (不管为什么,它对我不起作用。)
我怎样才能完成这个简单的任务!?我不希望在我的视图中使用预编译的这些信息创建数据结构;这似乎没有必要。提前致谢。
【问题讨论】: