Djangoでglobalなtemplatetagsを作る

Djangoにおいて、何処のテンプレートからでも呼べるようなtemplatetagsを作っておきたい、そういうケースがわりとあると思う。

例えば自分だと、ペジネーションみたいにどのページでも結構使うようなメソッドとかを毎度app/templatetags/に書くのはあまりにもだるいので,そういうのをどこでも呼べるようにしている。

まずはdjango_projectの下,他のappと同じ階層にこのようなlibフォルダーを作成する。

lib
├── __init__.py
└── templatetags
    ├── __init__.py
    ├── common.py

次にcommon.pyにグローバルで呼び出したいメソッドを書く。

common.py

@register.filter(namge='hello')
def hello(request):
    return 'hello,global'

次にsettings.pyの以下の箇所を変更する

INSTALLED_APPS = (
...
    'lib'
...
)

これで準備OK! あとは任意のhoge.htmlで

{% load common %}
{{hello}}

とかでメソッドを呼び出すことが出来る。

templatetagsを書くのが3割増ぐらいで楽しくなった!

Related Contents

Pickup Contents