2018年6月28日木曜日
ウズマスター戦記
ウズマスター戦記 https://www.uzumax.org/2018/06/djangocycle.html

Djangoのテンプレートタグ「cycle」 行の偶数奇数に便利

テーブルを表示する際に、偶数/奇数で色を変えたいとかありますよね?
そんな時に便利なのがタグ「cycle」です。


最大4つまで順番出力する機能

cycleは偶数/奇数を表現する為の機能と言うより、一定周期で順番に値を表示する為の機能です。

従って「偶数 / 奇数」の周期で実装しておけば、偶数、奇数、偶数、奇数……と永遠に出力されるということになります。

基本的にはfor文のループ中で使用するものです。

偶数奇数専用ってわけではないですが、それ以外の用途は余り思いつかないですね……。

また、最近はスタイルシートで色を交互に変えるということも出来る時代なので、「偶数 / 奇数」で色を変えるという用途でも私は使わないです。

余り使うシチュエーションが思い浮かばないですが、覚えておいて損は無いでしょう。

サンプルソース紹介

view.py

viewからテンプレートに対しリストを流し込みます。
def tagfor(request):
    context = {}
    list = []
    list.append({"name": "一郎", "age": 30})
    list.append({"name": "次郎", "age": 32})
    list.append({"name": "三郎", "age": 31})

    context["person_list"] = list

    return render(request, 'tag_samples/tagfor.html', context)

tagfor.html

リストの中身をループして表示するforタグと、その中のcycleの記述はこちら。
    <table class="table table-striped table-bordered">
        <thead>
        <tr>
            <td>No</td>
            <td>偶数 / 奇数</td>
            <td>名前</td>
            <td>年齢</td>
        </tr>
        </thead>
        <tbody>
        {% for person in person_list %}
        <tr class="{% cycle 'odd' 'add' %}">
            <td>{{ forloop.counter }}</td>
            <td>{% cycle '奇数' '偶数' %}</td>
            <td>{{ person.name }}</td>
            <td>{{ person.age }}</td>
        </tr>
        {% endfor %}
        </tbody>
    </table>

結果画像


結果HTML

<tbody>

<tr class="odd">
    <td>1</td>
    <td>奇数</td>
    <td>一郎</td>
    <td>30</td>
</tr>

<tr class="add">
    <td>2</td>
    <td>偶数</td>
    <td>次郎</td>
    <td>32</td>
</tr>

<tr class="odd">
    <td>3</td>
    <td>奇数</td>
    <td>三郎</td>
    <td>31</td>
</tr>
</tbody>

特に難しいことも無いと思います。

出展

公式サイトはこちら。


バックナンバー


0 件のコメント:

コメントを投稿

お気軽にコメント下さい。