Djangoのカスタムフィルタを作成する方法

Djangoのカスタムフィルタは以下のように作成することができます。

  1. django.template.defaultfilters.register」をインポート
  2. 「register.filter」デコレータを使ってフィルタを定義
  3. テンプレートにて「入力値|フィルタ名(:引数)」という形式でフィルタを使用

※ 上記(:引数)は任意です。

※ @stringfilterを併用すると、文字列に変換された入力値がフィルタに渡されます。

from django.template.defaultfilters import register
from django.template.defaultfilters import stringfilter

@register.filter(name=u'my_uppercase')
@stringfilter
def my_uppercase(value):
    return value.upper()

@register.filter(name=u'my_cut')
@stringfilter
def my_cut(value, len):
    try:
        return value[0: int(len)]
    except ValueError:
        return u'The Argument must be numeric!'
{{ ‘str'|my_cut:3 }}
{{ ‘str'|my_uppercase }}

参考URL)

http://djangoproject.jp/doc/ja/1.0/howto/custom-template-tags.html

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