Python中如何在Django模板循环中轮换输出不同背景色的表格行
django for aaa in aaa_list 循环 中 轮换输出 <tr bgcolor="#ffffff"> 与 <TR bgcolor="#EEEEEE"> 好像用 forloop.counter 可以。但是试了总是不行。不知怎么写这个?
就是每个每个信息的背景轮换。
Python中如何在Django模板循环中轮换输出不同背景色的表格行
在Django模板里轮换表格行背景色,最常用的方法是使用cycle标签。这个标签在循环中按顺序输出给定的字符串,非常适合做这种交替效果。
假设你有一个对象列表items要渲染成表格行,可以这样写:
<table>
{% for item in items %}
<tr class="{% cycle 'row-even' 'row-odd' %}">
<td>{{ item.name }}</td>
<td>{{ item.value }}</td>
</tr>
{% endfor %}
</table>
然后在CSS里定义这两个类:
.row-even { background-color: #f8f9fa; }
.row-odd { background-color: #ffffff; }
cycle标签会在每次循环时在’row-even’和’row-odd’之间切换。如果你需要更多颜色,比如三种颜色轮换,就加更多参数:{% cycle 'row1' 'row2' 'row3' %}。
如果循环里嵌套了其他cycle标签,可能会干扰顺序。这时候可以给cycle起个名字来避免冲突:
{% for item in items %}
<tr class="{% cycle 'row-even' 'row-odd' as rowcolors %}">
<!-- 内容 -->
</tr>
{% endfor %}
还有个更直接的办法是用forloop.counter这个内置变量,它从1开始计数:
<tr class="{% if forloop.counter|divisibleby:2 %}row-even{% else %}row-odd{% endif %}">
或者用forloop.counter0(从0开始)配合取模运算也行。
总结:用cycle标签最省事。
打开浏览器开发者工具看一下属性写没写对。还有:
The bgcolor attribute of <tr> is not supported in HTML5. Use CSS instead.
CSS syntax: <tr style=“background-color:red”>
肯定可以,一般没有这么弄的,都是直接用 css 的功能
{% for aaa in aaa_list %}
<tr style=“background-color:{% cycle ‘red’ ‘green’ %}”>
…
</tr>
{% endfor %}
或者
{% if forloop.counter |divisibleby:“2” %}
如果用 bootstrap 直接就可以用现成的样式
<table class=“table table-striped”>

