【django】カスタムテンプレートタグとは

 

今回の記事では、djangoのカスタムテンプレートタグ(custom template tag)について解説します。

[toc]

カスタムテンプレートタグとは

 

djangoではタグやフィルタを自分で作成することができるようになっています。
これをカスタムテンプレートタグと呼びます。

 

用意されているライブラリを使わずに自分で関数を定義するイメージです。

 

カスタムテンプレートタグを使用するには

 

カスタムテンプレートタグを使用するには、以下のステップが必要になります。

必要なステップ

①カスタムテンプレートタグ用のディレクトリを作成する
②カスタムテンプレートフィルタを作成する

カスタムテンプレートタグ用のディレクトリ作成

カスタムテンプレートタグの名前をhogehoge.pyとした場合、以下の構成になります。
init.pyは中身が空のファイルですが必要ですので作成しましょう。

 

polls/
    __init__.py
    models.py
    templatetags/  !追加!
        __init__.py !追加!
        hogehoge.py !追加!
    views.py

 

テンプレートから呼び出す時はloadタグを使用します。

 

{% load hogehoge %}

カスタムテンプレートフィルタの作成と登録

hogehoge.pyの中身を書いていきましょう。

 

hogehoge.py

from django import template

register = template.Library()

@register.filter
def cut(value, arg):
    return value.replace(arg, '')

@register.filter
def lower(value):
    return value.lower()

 

関数cutは引数argを持ち、argで指定した文字を削除します。呼び出す時は以下の通り。

 

{{ var|cut:"0" }}

 

各値の意味

変数:var
フィルタ:cut
フィルタの引数:”0″

 

引数argに”0″が代入されて、cut関数が実行されます。
例えば変数varが”00111″だとしたら、”111″が返ってきます。

 

引数を持たない場合は、関数lowerのように記載します。

@register.filerを記載することで、カスタムフィルタとして登録されます。

 

ABOUTこの記事をかいた人

個人アプリ開発者。Python、Swift、Unityのことを発信します。月間2.5万PVブログ運営。 Twitter:@yamagablog