フィルターの設定

🟢 Python Django
投稿日: 2026年5月12日8:36
\templatetags\itsagent.py

from django import template
register = template.Library()

@register.filter(name='extra')
def itsagentindex(sequence, position):
    try:
        s=int(position)-1
        return sequence[s]
    except:
        return None

@register.filter(name='fst')     
def itsagentfst(value,arg):
    try:
        s = value.find(arg)
        return value[:s]
    except:
        return None
    
@register.filter(name='spafter')     
def itsagentfst(value,arg):
    try:
        s = value.find(arg)
        pre= value[:s+1]
        aft = value.replace(pre, '')
        return aft
    except:
        return None
アプリのフォルダ直下に\templatetagsフォルダを作成。
その下にPythonファイルを置く。
空ファイルの __init__.py ファイルも必ず置く。(Djangoにフォルダを認識させるためだとか)

@register.filter(name='extra')でフィルタの名前が付けられるので、Templateからはその名前で呼ぶことができる。

extraでは、Template内のPythonでは配列の要素の位置を取得できないので、フィルターを使っている。

fstは対象の文字列の最初の半角空白の位置を取得しその前の文字列を取得している。
spafterはfstを取り除いた、つまり空白後の値を取得している。

注意点は、
フィルターを使用するテンプレートで使用するフィルターを読み込むこと。

ここでは、
{% load itsagent %}
をTemplateの上部に書く。

使い方は
{{kana|fst:' '}} <span class="kanaafter">{{kana|spafter:' '}}</span>

みたいな。
No Comment