この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:1
ページ更新者:T
更新日時:2019-06-21 00:01:21

タイトル: テンプレートで利用する共通のcontextを定義する方法
SEOタイトル: 【django】テンプレートで利用する共通のcontextを定義する方法

概要

以下の様に全てのテンプレートで使用するパラメータを毎回contextに詰めるのは冗長的で依存的になってしまう。

context = {
    'key1': 123,
}

template_name = 'index.html'

return render(request, template_name, context)

共通のcontextはcontext_processorの機能を使用して定義することで個別に値を詰める必要が無くなる。

 

context processorの定義と設定

適当な場所にcontext processor用のファイルを定義する。

今回はappディレクトリ直下にcontext_processorsディレクトリを作成してその中にsample.pyを作成するものとする。

以下、sample.pyの内容。

def sample(request):

    return {'key1': 123}

 

定義してファイルをsetting.pyに追記する。

以下、setting.pyに定義する内容。

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [
            os.path.join(BASE_DIR, 'templates'),
        ],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',

                'app.context_processors.sample.sample',
            ],
        },
    },
]

 

テンプレート側の出力

あとは以下のようにテンプレート側で出力するだけ。

{{ key1}}