概要
settings.pyのTEMPLATESは配列・辞書の入れ子になっている。
'DIRS'- プロジェクトルート直下のテンプレートディレクトリーを指定する。そのサブディレクトリーも探索される。
'APP_DIRS'- アプリケーションディレクトリー下のテンプレートディレクトリー探索を有効にする。そのサブディレクトリーも探索される。
初期状態
settings.py生成直後のTEMPLATESの内容は以下のとおり。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [], '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', ], }, }, ] |
'DIRS': []と設定されていて、プロジェクトルート(この場合はprojectroot/)直下は探索されない。
'APP_DIRS': Trueと設定されていて、各アプリケーションディレクトリー下のtemplatesディレクトリーが探索される。
DIRS
プロジェクトルート直下のテンプレートディレクトリーを指定する。たとえば以下のようにtemplatesディレクトリーを準備した場合。
|
1 2 3 4 5 6 7 8 9 |
projectroot/ ├── config │ ├── __init__.py │ ├── asgi.py │ ├── settings.py │ ├── urls.py │ └── wsgi.py ├── manage.py └── templates |
準備したtemplatesを探索させるためには、以下のように設定する。
|
1 |
'DIRS': ['templates'] |
あるいは以下のようにベースディレクトリーからのパスであることを明示する。この場合settings.pyでimport osが必要。
|
1 2 3 |
import os .... 'DIRS': [os.path.join(BASE_DIR, 'templates')], |
ディレクトリーの指定はサブディレクトリーでもよい。たとえばconfigディレクトリー下のtemplatesディレクトリーとしたければ以下のように記述。
|
1 |
'DIRS': ['config/templates'] |
APP_DIRS
APP_DIR=Trueとすると、各アプリケーションディレクトリー下のtemplatesディレクトリーが探索される。そのサブディレクトリーも探索される。