概要
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
ディレクトリーが探索される。そのサブディレクトリーも探索される。