Djangoには、テンプレートファイル内でのみ利用できるテンプレート変数と、グローバル変数のように、どのテンプレートファイルからも利用できるテンプレート変数も存在しています。
そのようなグローバル変数的なテンプレート変数のことをcontext_processorと呼びます。settings.pyにて、TEMPLATE_CONTEXT_PROCESSORS変数に、テンプレート変数を返すメソッドを登録しておくと、どのビューからでも当該変数をコンテキストに追加することが可能となります。
$ emacs settings.py
TEMPLATE_CONTEXT_PROCESSORS = (
"hogeapp.context_processors.user_name",
...,
)
$ emacs hogeapp/context_processors.py
def user_name(request):
if ( request.user.is_authenticated() ):
return {"uname": request.user.username}
else:
return {"uname": None}
上記の例は、ログインしている場合に、アカウント名を常に「uname」というテンプレート変数に格納するような設定です。
関連記事
Djangoでは、テンプレートファイル内に{{veriable}}と記述すると変数として扱われます。 これをハンドラ側(コントロール側)で定義することによって、様々な変数をマッピングできます。 最も簡単な例を以下に示しましょう。