Context Processors

django Published at Feb. 12, 2025, 5:50 a.m. by admin@senrigan.org

コンテキストプロセッサーの使い方について

コンテキストプロセッサーはrequestオブジェクトを引数として受け取って辞書として返すもの。

具体的には、ショッピングカートの中身とか、ユーザーのログイン情報とか、システムワイドで共通に使えそうなテンプレートを使いまわしたいときに使える。

プロジェクトを作成したとき、デフォルトでsettings.pyのTEMPLATESに設定されいているコンテキストプロセッサー。

  • django.template.context_processors.debug
  • django.template.context_processors.request
  • django.contrib.auth.context_processors.auth
  • django.contrib.messages.context_processors.messages

例えば、Accountアプリにcontext_processors.py(慣例的な名前のよう)を作って、

def userdata(request):
    return {'account': Account(request)} 

みたいにして、settings.pyで

TEMPLATES = [
{
    'OPTIONS': {
        'context_processors':
            'account.context_processors.logindata'
...    

のように設定すれば、ロードしなくてもテンプレートの中でaccountオブジェクトを扱える。(疑似コード)