プログラミング

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

プログラミング
この記事は約3分で読めます。
スポンサーリンク

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

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

koichi-ezato/mysite
Contribute to koichi-ezato/mysite development by creating an account on GitHub.
スポンサーリンク

templatetagsディレクトリ作成

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

mk dir /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はまだまだ奥が深いので、これからもより生産性が高い実装方法を探していきたいと思います。

スポンサーリンク
スポンサーリンク
KoEをフォローする
CodeLab

コメント

タイトルとURLをコピーしました