在Django中使用循环

5 投票
2 回答
6338 浏览
提问于 2025-04-15 11:34

我有一个网页,在这个网页上我在循环执行一些操作,并且在循环里面又使用了一个循环。

{% for o in something %}
{% for c in o %}
 <div class="{% cycle 'white' 'black'%}"></div>
{% endfor %}

现在,这意味着每次进入这个循环时,第一个div标签的背景会变成白色。但是,我想要的是让背景颜色交替变化,也就是说第一次是白色,下一次进入循环时,第一个div标签的背景变成黑色。这样做可以实现吗?

2 个回答

0

像这样可能有效(还没测试过):

{% for o in something %}
 {% for c in o %}
  {% ifchanged forloop.parent.counter %}
   <div class="{% cycle 'white' 'black' %}"></div>
  {% else %}
   <div class="{% cycle 'black' 'white' %}"></div>
  {% endifchanged %}
 {% endfor %}
{% endfor %}
4

关于这个问题,有一个已经被接受的bug。你可以试试里面提到的修改,看是否对你有用。

如果你不想尝试这个,或者试了之后不管用,可以试试这个方法:

{% cycle 'white' 'black' as divcolors %}
{% for o in something %}
    {% for c in o %}
        <div class="{% cycle divcolors %}"></div>
    {% endfor %}
{% endfor %}

根据我的理解,循环会从白色开始,然后在每次循环中依次经过每个值(这意味着你不会每次都从白色重新开始)。

撰写回答