Djangoテンプレートで4カラムのテーブルを実現する

以前テンプレートのforループの中で奇数/偶数を判定する方法というメモを書きました。これだと2カラムのテーブルは作れますが、それ以上だと難しかったので、remainderという余りを返すカスタムフィルタを作りました。

4カラムのテーブルの例:

--- my_filter ---

from django import template

register = template.Library()

@register.filter
def remainder(value, arg):
    if arg == 0:
        return 0
    return int(value) % int(arg)
--- table_sample.html ---

<html>
  <head></head>
  <body>
    <table border="1">
      {% for v in "ABCDEFGHIJKLMNOPQ"|make_list %}
        {% if forloop.counter0|remainder:"4" == 0 %}
        <tr>
        {% endif %}
          <td>{{ v }}</td>
        {% if forloop.counter0|remainder:"4" == 3 %}
        </tr>
        {% endif %}
        {% if forloop.last %}
          {% if forloop.counter0|remainder:"4" == 0 %}
            <td> </td><td> </td><td> </td>
          {% endif %}
          {% if forloop.counter0|remainder:"4" == 1 %}
            <td> </td><td> </td>
          {% endif %}
          {% if forloop.counter0|remainder:"4" == 2 %}
            <td> </td>
          {% endif %}
        {% endif %}
      {% endfor %}
    </table>
  </body>
</html>

この記事が役に立った場合、シェアしていただけると励みになります!!