【Django】テンプレート:フィルターの一覧(使用方法、書き方)

時計 2021.12.25 / 時計

【Django】テンプレート:フィルターの一覧(使用方法、書き方)

本記事ではDjangoテンプレートで利用できるフィルターについて解説していきます。

ここではDjangoに初めから用意されている組み込みフィルターを一覧で確認できます。

Djangoにおけるテンプレートについては以下記事をご参照ください。

Djangoのテンプレートとは

Djangoはテンプレートという仕組みを利用してWebページを生成します。

テンプレートとはHTMLをベースとして書かれており、コード内に変数の表示や条件分岐・ループといったロジックを組み込み、動的にWebページの元となるHTMLを生成します。

テンプレートを利用することで以下のことを実現できます。

  • 変数に格納された値・文字列の表示
  • 変数の内容を変更して表示(フィルター)
  • 条件分岐やループなどのロジックの組み込み(タグ)

本記事では上記の中から、フィルターについて詳しく解説していきます。

タグについて詳しくは以下記事をご参照ください。

テンプレート:フィルター

フィルターとは

Djangoのテンプレートで利用できるフィルターとは、views.pyから受け取った変数(コンテキスト)を加工する仕組みです。

Djangoにはインストール時から利用できる組み込みフィルターが数多く用意されています。

変数の文字列長を表示するフィルターや、指定した日時にフォーマットするフィルター、改行文字をHTMLのbrタグに変換するフィルターなど多種多様です。

フィルターの構文(使用方法)

変数の値または文字列の表示には、二重にした中括弧で変数を囲みます。

{{ 変数名 }}

表示する変数に対してフィルターを使って加工するには、変数名の後に「|」(パイプ)を記入し、続けてフィルター名を書きます。

構文

{{ 変数名|フィルター名 }}

引数を伴うフィルターの場合は、フィルター名の後に「:」(コロン)を記入し、続けて引数を書きます。

構文

{{ 変数名|フィルター名:引数 }}

フィルターを複数使用する場合は、「|」でフィルターを連結します。

構文

{{ 変数名|フィルター名:引数|フィルター名:引数 }}

組み込みフィルター

Djangoに初めから用意されている組み込みフィルターは非常に多いです。ここでは使用頻度が高いフィルターを解説していきます。

ここではデフォルトで使用できる変数の一つ「user」(サイトにアクセスしているユーザー)を利用します。

文字列の文字変換

default:デフォルト表示

組み込みフィルターのdefaultは、変数の中身が存在しない(空文字)場合やNone、False、0の場合に引数で指定した文字列を表示します。

{{ user.username|default:"名前なし" }}

linebreaksbr:改行文字の変換

組み込みフィルターのlinebreaksbrは、変数内の改行文字「\n」をHTMLの「<br>」に変換します。

{{ user.profile|linebreaksbr }}

改行文字を含むテキストエリアをWebページで表示したい場合に、linebreaksbrは利用されます。

urlize:リンクへ変換

組み込みフィルターのurlizeは、変数内に含まれるURLまたはメールアドレスをクリック可能なリンクに変換します。

{{ user.email|urlize }}

truncatechars:文字列の省略(文字数)

組み込みフィルターのtruncatecharsは、表示する変数の文字列を引数に指定した文字数以下になるように省略します。

{{ user.profile|truncatechars:3 }}

指定された文字数まで省略した後に「…」という文字を付与します。

例えばuser.profileの値が「office54.net」だった場合以下のようになります。

{{ user.profile|truncatechars:3 }}
# of…

truncatewords:文字列の省略(単語)

組み込みフィルターのtruncatewordsは、変数の文字列を引数に指定した単語数以下になるように省略します。

{{ user.profile|truncatewords:2 }}

例えばuser.profileの値が「I like python and Django」だった場合以下のようになります。

{{ user.profile|truncatewords:2 }}
# I like…

capfirst:先頭文字を大文字変換

組み込みフィルターのcapfirstは、変数の先頭文字列を大文字に変換します。

{{ user.first_name|capfirst }}

upper:すべての文字を大文字変換

組み込みフィルターのupperは、変数の文字列すべてを大文字に変換します。

{{ user.username|upper }}

lower:すべての文字を小文字変換

組み込みフィルターのlowerは、変数の文字列すべてを小文字に変換します。

{{ user.username|lower }}

add:加算

組み込みフィルターのaddは、変数の値に引数で指定した値を加算した結果を表示します。

{{ user.age|add:2 }}

cut:除去

組み込みフィルターのcutは、変数の文字列から引数で指定した文字を削除して表示します。

{{ user.username|cut: ' ' }}

上記では空白を引数で指定しています。user.usernameが'Yamada Taro'の場合、指定した空白を削除した'YamadaTaro'が出力されます。

日時の書式変換

date:日付フォーマット

組み込みフィルターのdateは、date形式の日付データを指定形式へフォーマット表示します。
引数にフォーマット形式を指定します。

{{ user.birthday|date: "Y-m-d" }}

dateのより詳しい使い方については以下記事をご参照ください。

文字列から分析

length:文字列長

組み込みフィルターのlengthは、変数の値の長さやリストの要素数を表示します。

{{ user.first_name|length }}

リストから取得

first:先頭要素の取得

組み込みフィルターのfirstは、変数に格納されたリストから最初の要素を表示します。

{{ user.address|first }}

変数がリスト['office', '54']のとき、'office'を表示します。

last:末尾要素の取得

組み込みフィルターのlastは、変数に格納されたリストから最後の要素を表示します。

{{ user.address|last }}

join:結合

組み込みフィルターのjoinは、変数内のリストを引数で指定された文字で結合して表示します。

{{ user.address|join: '.' }}

上記では引数に「.」をしています。変数がリスト['office', '54']のとき、'office.54'が出力されます。

まとめ

本記事「【Django】テンプレート:フィルターの一覧(使用方法、書き方)」はいかがでしたか。

Webアプリケーション開発で主に利用するフィルター機能は、組み込みフィルターを使えば基本的には事足ります。

フィルターを使いこなすことで開発が非常に楽になりますので、ぜひ覚えて利用してください。