gpt4 book ai didi

django - 具有多于一组行的 Django 模板中的交替行着色

转载 作者:行者123 更新时间:2023-11-28 19:33:41 24 4
gpt4 key购买 nike

Django 模板提供内置标签 cycle 用于在模板中不同点的多个值之间交替(或模板中的 for 循环),但是当在外部范围内访问时,此标签不会重置cycle 的定义。即,如果您的模板中有两个或更多列表,您希望使用一些 css 定义的所有行 oddeven,第一行列表将从最后一个停止的地方开始,而不是从选择(oddeven)中进行新的迭代

例如,在下面的代码中,如果第一个博客的条目数为奇数,那么第二个博客中的第一个条目将以 even 开头,而我希望它从 开始>奇数

{% 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

没有用。 (该代码对我不起作用。)

我也尝试过将我的内部循环移动到自定义标记中,但这也不起作用,也许是因为编译/渲染循环将循环移回外部循环? (不管为什么,它对我不起作用。)

我怎样才能完成这个简单的任务!?我不希望使用预编译的信息在我的 View 中创建数据结构;这似乎是不必要的。提前致谢。

最佳答案

最简单的解决方法(直到修复并应用 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 - 具有多于一组行的 Django 模板中的交替行着色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/459161/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com