Djangoのテンプレートで使えるフィルターのまとめ
Djangoのテンプレートで使えるフィルターについて調べたので,こちらにメモを残しておきます.
フィルターの書き方
{{
と}}
で囲まれた変数に対して,|FILTER
とすることで,変数に対して処理を行うことができます.
以下はvalue
という変数に対して,2を加える処理を行うフィルターです.
{{ value:add:"2" }}
value
の値が3だったとき,ページ上では5と表示されます.
他にも,
{{ value|capfirst }}
とすることで,先頭の文字を大文字にすることができます.
value
が"django"の場合,ページ上ではDjango
と表示されます.
ここからはよく使うフィルターを紹介していきます.
date
{{ value|date:"D d M Y" }}
value
がdatetime
オブジェクトの時に,指定した書式で日付を表示してくれます.
この例の場合,"Tue 04 May 2021"と表示されます.
日付の表示方法に関して詳しくはこちらを参照してください.
default
{{ value|default:"nothing" }}
value
がpythonのFalse
に相当する値の時(e.g. 空文字列,空のリストなど),コロン以下の値を返します.
上の例ではvalue
が空文字列の時,"nothing"を返します.
dictsort
辞書型の変数を特定のキーでソートします.for文と組み合わせると以下のようなことができます.
変数books
[ {'title': '1984', 'author': {'name': 'George', 'age': 45}}, {'title': 'Timequake', 'author': {'name': 'Kurt', 'age': 75}}, {'title': 'Alice', 'author': {'name': 'Lewis', 'age': 33}}, ]
テンプレート内の記述
{% for book in books|dictsort:"author.age" %} * {{ book.title }} ({{ book.author.name }}) {% endfor %}
出力
* Alice (Lewis) * 1984 (George) * Timequake (Kurt)
これに加えて,辞書型を逆順にソートするdictsortreversed
というフィルターもあります.
length
{{ value|length }}
value
の長さを返します.リストの場合は要素数,文字列の場合は文字数を返します.
linebreaksbr
{{ value|linebreaksbr }}
文字列中の改行文字を全てHTMLの<br>
に変換します.
このフィルターを追加しないと,表示画面で改行が反映されません.
lower
{{ value|lower }}
文字列を全て小文字にして表示します.
全てを大文字にするにはupper
フィルターを使用します.
safe
{{ value|safe }}
HTMLタグをエスケープさせず,レンダリングさせて表示させます.
truncatechars
{{ value|truncatechars:7 }}
指定した文字数未満になるように,文字列を省略させます.
上の例でvalue
が"Joel is a slug"の時,表示される文字は"Joel i…"となります.
truncatewords
{{ value|truncatewords:2 }}
指定した単語数以下になるように,文字列を省略させます.