[Django]テンプレートの組み込みタグの作成方法

Django Logo プログラミング

Django のテンプレートで使用する組み込みタグを独自に実装することがあったので、その時の実装方法を説明していきます。

サンプルを下記に実装しているので参考までにどうぞ!

GitHub - koichi-ezato/mysite
Contribute to koichi-ezato/mysite development by creating an...

templatetags ディレクトリ作成

以下のパスに templatetags ディレクトリを作成する

$ mkdir /path/to/project/app/templatetags

init.py 追加

中身は空で良いので、 __init__.py ファイルを追加します。

sample.py 追加

sample.py を追加します。このファイル名がテンプレートで呼び出す際の名称となるので、適宜書き替えてファイルを作成してください。

サンプルの実装

sample.py に下記のように実装していきます。

# sample.py
from django import template

register = template.Library()

@register.filter
def mul(value, arg):
    return value * arg

@register.filter
def echo_test(value):
    return value + 'test'

今回は掛け算を行うフィルタと文字列を出力するだけのフィルタを実装しました。
では、今回追加したフィルタを実際に使用してみたいと思います。
その前に設定ファイルに追記する必要があるので、それを先に行ます。

setting.py 編集

INSTALLED_APPS に自身のプロジェクトを追加します。

INSTALLED_APPS = [
    ...
    'mysite',
    ...
]

テンプレートへの実装

Django のテンプレートで今回実装したフィルタを使用します。

まず、フィルタのロードを行ます。

{% load sample %}

そして、実際にフィルタを使用します。

<p>組み込みタグテスト(mul)</p>
{{ 1|mul:10 }}
<br>
<p>組み込みタグテスト(echo_test)</p>
{{ "sample"|echo_test }}

この状態で runserver コマンドを実行して動作確認します。

http://localhost:8000/polls/create/ にアクセスすると、

こんな感じで掛け算と文字列の出力が行われていることが確認できます。

最後に

組み込みタグを独自に実装することで、 View でやらなくても良いこと(明細の数値の合計値を算出するなど)をテンプレート側で行うことができるようになります。これにより、 View の実装をより簡略化することができるようになるので、 View の実装を効率的に行うことができるようになると思います。

Django はまだまだ奥が深いので、これからもより生産性が高い実装方法を探していきたいと思います。

コメント

モバイルバージョンを終了
タイトルとURLをコピーしました