(最終更新月:2022年2月)
✔このような方へ向けて書かれた記事となります
「Django templatetagsって何?」
「Django tempaltetagsをオリジナルで作りたいけどどうやるの?」
「実例があるとわかりやすいんだけど、、、」
✔当記事を通じてお伝えすること
- Django templatetags テンプレートフィルタとは?
- Djangoでオリジナルテンプレートフィルタの作り方
- 実際に使ってみよう|使い方の解説
【著者プロフィール】

当ブログを通じて、下記アプリの作り方、コード等を公開、解説しています
☆日報アプリ「D-Repo」(デモ版)→こちら
☆便利ツールアプリ「Tool Station」→こちら
✔初期費用ゼロ/月9,800円でWebデザインが学べる
デザインを習得するためには、客観的なフィードバックと改善が不可欠です。
以下の記事ではこんなWebデザインスクールをご紹介しています。
- 初期費用ゼロで、月々9,800円のみ
- オンラインで、教材が使い放題
- コンテストや実務案件にチャレンジして報酬もGETできる
デザナルはトップデザイナーからレビューがもらえる、格安のWebデザインスクールです。
詳細をまとめた記事もございますので、ぜひご覧ください。
Djangoのテンプレートタグ/テンプレートフィルタとは?

Djangoにはテンプレート上で一定の処理ができるようテンプレートタグ、テンプレートフィルタが用意されています。
当記事では、テンプレートフィルタについて詳しく解説をしていきます。テンプレートタグについて知りたい方はこちらをご覧ください。→ 「テンプレートタグ全25種類を解説」
テンプレートフィルタとは、指定した値に一定の処理を加えて、その結果をブラウザで表示できるという機能のことです。
書き方としては、{{ 値 | フィルタ }} となります。
ビルトインされているの一つを例として挙げてみます。下記はアルファベットを大文字にするフィルタです。
{{ "i like python" | upper }}
ブラウザでの表示は下記の通りとなります。

ビルトインされているものもとても便利なフィルターは多いです。
ただ、どうしても備わっているものには限りがありますので、当記事を通じて、オリジナルのテンプレートフィルタを作成する方法について解説していきます。
Djangoでオリジナルテンプレートフィルタの作り方

今回作成するフィルタは下記の通りです。
値がNoneの時は空文字を返し、それ以外はそのまま値を返す
作成の背景としては、テンプレート上に記述した変数がNoneの時、通常ですとDjangoは「None」とブラウザ上に表示させます。
ただブラウザで「None」と表示されるのはとてもかっこ悪いので、何も表示されないようにします。
if文を使って表示を操作することもできますが、今回はフィルタを使い対応してみます。
もちろん、「こんなの必要ないよ!」という方も、やり方の一例としてご覧頂いてご自身のアプリに必要なものをお作り下さい。
ファイルの保存場所
ファイルの保存場所が大事です。
アプリフォルダ直下に下記の通りフォルダ、ファイルを作成します。
templatetags > __init__.py, お好きなファイル名.py
私のファイルツリーは下記のとおりです。
アプリフォルダ
├── __init__.py
├── admin.py
├── apps.py
..
..
├── templatetags #新しく作成したのはこちらです
│ ├── __init__.py
│ └── myfilter.py
..
└── views.py
今回は「myfilter.py」というファイル名になっています。
作成方法
作成したフィルタは下記の通りです。
from django import template
register = template.Library()
@register.filter
def checkNone(value):
if not value:
return ""
else:
return value
オリジナルフィルター作成の際に使用できるテンプレートはこちら↓
from django import template register = template.Library() @register.filter def 関数名(value): #ここに処理を入れる return 表示させたい値
テンプレートのうち、
- 関数名
- 処理
- returnする値
の3つを記述すれば完成です。
関数で受け取る「value」は、テンプレート上で指定する値です。
関数内で一定の処理をし、返す値をこの関数で指定しましょう。
実際に使ってみよう|使い方の解説

作成が完了しましたら、テンプレート上での作業に移ります。
フィルターの読み込み
{% load myfilter %}
注意)こちらの例ではファイル名が、「myfilter.py」の場合です。
フィルタの記述
{{ 適用したい値 | フィルタの関数名 }}
今回は「object.name」という変数にフィルタを適用したいので下記のように記述します。
{{ object.name | checkNone }}
サーバーの再起動
記述は完了しましたが、このままでは表示が何も変わりません。
サーバーを立ち上げている場合は、一度「ctrl + c」でサーバーをストップし、再度起動します。
サーバーを再起動することで、作成したフィルタが正しく読み込まれます。
まとめ

以上でオリジナルテンプレートフィルタの作成、使い方の解説を終わります。
当記事の内容を整理します。
テンプレートフィルタとは、指定した値に一定の処理を加えて、その結果をブラウザに表示できる機能です。
カスタムフィルタの作り、テンプレートで適用するには下記のステップで進めましょう。
- 保存場所
- 記述方法
- テンプレート上での読み込み
- テンプレート上での記述
- サーバーの再起動
もし、「これなんだっけ?」というものがある方は該当の箇所に戻りもう一度見返してみて下さい。
もしくは都度、当ブログまで戻ってければと思います。
当ブログでは、日報アプリ開発を通じて、Webアプリを一から開発し公開するまでを初学者の方でもわかるようにと記事を連載しています
「Djangoでのアプリ開発を学びたい!」
「Djangoで開発したアプリをWebで公開するにはどうするの?」
という方は必見です!
