Djangoテンプレートでよく使うフィルタ20選|使い方と例で初心者も安心
生徒
「Djangoのテンプレートって、HTMLに不思議な記号が書いてありますよね。あれは何をしているんですか?」
先生
「あれはテンプレートタグやフィルタと呼ばれる仕組みで、画面に表示する内容を調整するためのものです。」
生徒
「フィルタというのは、難しい処理を書くものなんですか?」
先生
「いいえ。フィルタは、表示するときに少し形を変えるための道具です。文字を大文字にしたり、日付を見やすくしたりするだけですよ。」
1. Djangoテンプレートフィルタとは?
Djangoテンプレートフィルタとは、画面に表示するデータを加工するための機能です。プログラムの中身を変えずに、見た目だけを調整できるのが大きな特徴です。たとえば、数字を桁区切りにしたり、文章を短くしたりできます。
フィルタは「パイプ記号(|)」を使って書きます。これは、水をろ過する道具のようなイメージで、元のデータを少し整えてから表示します。
2. よく使う文字列フィルタ
まずは文字列を扱うときによく使われるフィルタです。ブログやお知らせ画面では、文字の調整がとても重要になります。
- upper:すべて大文字にする
- lower:すべて小文字にする
- title:単語の先頭を大文字にする
- length:文字数を数える
- truncatechars:指定した文字数で切り取る
<p>{{ username|upper }}</p>
<p>{{ message|truncatechars:10 }}</p>
この例では、ユーザー名を大文字で表示し、文章は十文字までに短くしています。長い文章を一覧画面に出すときに便利です。
3. 数値やデータを整えるフィルタ
次は数字やデータを見やすくするためのフィルタです。数値はそのまま表示すると、少し読みにくいことがあります。
- add:数値を足す
- divisibleby:割り切れるか判定する
- filesizeformat:ファイルサイズを読みやすくする
- default:値がないときの表示を決める
- default_if_none:Noneのときの表示を決める
<p>{{ count|add:1 }}</p>
<p>{{ file_size|filesizeformat }}</p>
ファイルサイズが「1024000」のような数字でも、「1.0 MB」のように表示されるため、初心者にも優しい画面になります。
4. 日付と時間を扱うフィルタ
日付や時間は、表示の仕方で印象が大きく変わります。Djangoテンプレートでは、簡単に形式を整えられます。
- date:日付の表示形式を指定する
- time:時間の表示形式を指定する
- timesince:どれくらい前かを表示する
<p>{{ post.created_at|date:"Y年m月d日" }}</p>
<p>{{ post.created_at|timesince }}前</p>
「三日前」や「一時間前」といった表現は、利用者にとって直感的で分かりやすいです。
5. リストや辞書で使えるフィルタ
複数のデータをまとめて扱うときに便利なのが、リスト用のフィルタです。商品一覧や記事一覧でよく使われます。
- first:最初の要素を取り出す
- last:最後の要素を取り出す
- join:リストを文字列として結合する
- slice:一部だけ取り出す
<p>{{ tags|join:", " }}</p>
<p>{{ items|slice:":3" }}</p>
タグをカンマ区切りで表示したり、最初の三件だけを表示したりできるため、画面がすっきりします。
6. 表示を安全にするフィルタ
最後は、安全や見た目に関わるフィルタです。Webアプリでは、予期しない表示を防ぐことが大切です。
- safe:HTMLとして表示する
- striptags:HTMLタグを削除する
- linebreaks:改行を反映する
- escape:危険な文字を無効化する
<p>{{ content|striptags|truncatechars:50 }}</p>
このように複数のフィルタを組み合わせることで、安全で読みやすい表示を簡単に作れます。