我希望利用网站模板中现成的颜色循环变化表格样式,下图:
<tr class='A'> ..... </tr>
<tr class='B'> ..... </tr>
<tr class='C'> ..... </tr>
<tr class='D'> ..... </tr>
<tr class='E'> ..... </tr>
我的思路:
1、在view中,将5个样式以字典方式带入到html中:
G_view_class={0:"A",1:"B",2:"C",3:"D",4:"E"}
2、在html里,我首先做了以下尝试:结合forloop.counter计数器,对数值5求余数(%),然后调用dict的对应key,根本行不通。
{% for data in G_view.data %}
<tr class="{{G_view_class[{{forloop.counter}}%5]}}"> #这里用python语法求余数,然后调用dict的对应key,根本行不通。
<td>{{data.1}}</td>
<td>{{data.2}}</td>
<td>{{data.3}}</td>
<td>{{data.4}}</td>
<td>{{data.5}}</td>
</tr>
{% endfor %}
此方法行不通,好像django的语法跟python不是一个序列,不能直接加减乘除
然后查阅资料,需要这样来做:
{% if forloop.counter0|divisibleby:2 %}
不停地if判断 ,这样倒是行了,可效率没了。帮支支招?如何做更简单一些?
改下 data 的处理,
class_lst = ['A','B','C','D','E']
ci = 0
data_temp = dict_G_view['data']
for i in range(len(data_temp)):
data_temp[i].append(class_lst[i % len(class_lst)])
dict_G_view['data'] = data_temp
改下模板
HTML
{% for data in G_view.data %}
<tr class="{{data.6]}}">
<td>{{data.1}}</td>
<td>{{data.2}}</td>
<td>{{data.3}}</td>
<td>{{data.4}}</td>
<td>{{data.5}}</td>
</tr>
{% endfor %}
改变下思路,你可以这样 , 在建立 G_view.data 的数据时候, 把 ABCDE 写到每行的最后一列。
贴下你的 G_view.data 的建立过程, 添加class 元素进去。
print(dict_G_view['data']) 看看
应该是个二维列表吧?