読者です 読者をやめる 読者になる 読者になる

[Django] テンプレートforタグで奇数、偶数を判断する

Django0.97_pre では、テンプレートforタグで奇数、偶数を判断することができない。
このためテーブルの行を繰り返す時に、class指定を変えて行変更するときに不便だ。

以下のようにDjangoソースを直すと、簡単に奇数、偶数を判断できて便利。
本家のMLに、追加要望だしてみようか。。

修正箇所

Django-0.97-pre/trunk/django/template/defaulttags.py
 131 for i, item in enumerate(values):
 132             # Shortcuts for current loop iteration number.
 133             loop_dict['counter0'] = i
 134             loop_dict['counter'] = i+1
 135             # Reverse counter iteration numbers.
 136             loop_dict['revcounter'] = len_values - i
 137             loop_dict['revcounter0'] = len_values - i - 1
 138             # Boolean values designating first and last times through loop.
 139             loop_dict['first'] = (i == 0)
 140             loop_dict['last'] = (i == len_values - 1)
 141             # 以下追加★★★★★
 142             loop_dict['odd'] =  ((i % 2) == 1)

使い方

{% for msg in latest_list %}
   <tr class="{% if forloop.odd %}even{% else %}odd{% endif %}">
     <td>{{msg.send_date}}</td>
     <td>{{msg.title}}</td>
   </tr>
{% endfor %}