ほんじゃらねっと

ダイエット中プログラマのブログ

テンプレート用のカスタムタグやカスタムフィルタをサブディレクトリに分ける

djangoのカスタムタグやカスタムフィルタを利用する場合はloadタグでファイル名(モジュール名)を
指定してロードする。


これまたアプリ名は必要なく、モジュール名だけで呼び出せるのだけど、
そのままだと名前がかぶる可能性があるのでアプリを指定して呼び出したい時がある。


そんな時はアプリ名と同じサブディレクトリ(サブモジュール?)を作成してそこにファイルを配置する


こんな感じ

project1/
app1/
templatetags/
__init__.py
app1/
__init__.py
filters.py
app2/
templatetags/
__init__.py
app2/
__init__.py
filters.py


このように配置したファイルでapp1アプリのfilters.py内のタグやフィルタを使用したい場合は、
テンプレートで下記のように指定する

{% load app1.filters %}


同じようなネタでした。