Djangoのカスタムフィルタに関する追記

先日カスタムフィルタに関するメモを書きました(カスタムフィルタの作成方法)。これに関して、若干補足しなければならないことがわかりました。

以前のメモでは、「django.template.defaultfilters.register」をインポートして、デコレータ「register.filter(name=u"my_uppercase")」とカスタムフィルタを定義していました。この方法だと、カスタムフィルタはdefaultfiltersが持つLibraryオブジェクトに登録されることになります。そうすると、他の人が作ったカスタムフィルタと併用する場合などにおいて、バッティングする可能性があります。

もし、これを防ぐには以下のような方法を取る必要があります。

  1. 「settings.py」の「INSTALLED_APPS」に定義してあるアプリケーションの下に、「templatetags」というフォルタを作成
  2. 作成した「templatetags」の中に、作成したカスタムフィルタのモジュールを追加
  3. 「from django.template.defaultfilters import register」を削除し、「from django import template」と「register = template.Library()」を追加
  4. カスタムフィルタを利用するテンプレートで、「{% load カスタムフィルタのモジュール名%}」を追加

この記事が役に立った場合、シェアしていただけると励みになります!!