django里面利用forloop.counter和divisibleby解决表格样式循环变化的问题。

我希望利用网站模板中现成的颜色循环变化表格样式,下图:

img


模板最初的html是这样的,有5种样式可供循环:

<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']) 看看
应该是个二维列表吧?