Local 環境で、Django Template の編集 デバッグをしていて、
Template ファイル編集後に、毎回
python manage.py runserver
記載します。
前提 環境情報
-
OS
sw_vers ----------------------- ProductName: Mac OS X ProductVersion: 10.12.5 BuildVersion: 16F73 -----------------------
-
python version
python3 -V ----------------------- Python 3.5.1 -----------------------
-
Django Version
pip3 list | grep Django ----------------------- Django (1.10.7) -----------------------
原因 と 対策
Django のガイドに記載がありますが、
Python プログラマのための Django テンプレート言語ガイド — Django 1.4 documentation
django.template.loaders.cached.Loader
というテンプレートローダ があります。
ローカル環境構築時に、記載の意味を忘れて、settings.py 内の以下の記述をコピーしていたため、
テンプレートがキャッシュされるようになっていました。
TEMPLATES = [
{
"BACKEND": "django.template.backends.django.DjangoTemplates",
"DIRS": [
os.path.join(PROJECT_ROOT, "templates"),
os.path.join(PROJECT_ROOT, "amp_mobile/templates"),
],
"OPTIONS": {
"context_processors": [
"django.contrib.auth.context_processors.auth",
"django.contrib.messages.context_processors.messages",
"django.template.context_processors.debug",
"django.template.context_processors.i18n",
"django.template.context_processors.static",
"django.template.context_processors.media",
"django.template.context_processors.request",
"django.template.context_processors.tz",
"mezzanine.conf.context_processors.settings",
"mezzanine.pages.context_processors.page",
],
"builtins": [
"mezzanine.template.loader_tags",
],
"loaders": [
('django.template.loaders.cached.Loader', [
'django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader',
]),
],
},
},
]
以下、記述を削除すると、デフォルトのローダが使われ、キャッシュされなくなり、編集後に即時反映されるようになります。
"loaders": [
('django.template.loaders.cached.Loader', [
'django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader',
]),
],
ちなみにこの場合、以下のようにアプリケーションのテンプレートディレクトリを追加していたため、
"DIRS": [
os.path.join(PROJECT_ROOT, "templates"),
os.path.join(PROJECT_ROOT, "amp_mobile/templates"),
],
"APP_DIRS": True,
以上です。
コメント