Properly app_template_dirs when INSTALLED_APPS change.
This commit is contained in:
parent
025ec2e7fe
commit
6aa1a31660
|
@ -13,19 +13,22 @@ from django.template.loader import BaseLoader
|
|||
from django.utils._os import safe_join
|
||||
from django.utils import six
|
||||
|
||||
# At compile time, cache the directories to search.
|
||||
if six.PY2:
|
||||
|
||||
def calculate_app_template_dirs():
|
||||
if six.PY2:
|
||||
fs_encoding = sys.getfilesystemencoding() or sys.getdefaultencoding()
|
||||
app_template_dirs = []
|
||||
for app_config in apps.get_app_configs():
|
||||
app_template_dirs = []
|
||||
for app_config in apps.get_app_configs():
|
||||
template_dir = os.path.join(app_config.path, 'templates')
|
||||
if os.path.isdir(template_dir):
|
||||
if six.PY2:
|
||||
template_dir = template_dir.decode(fs_encoding)
|
||||
app_template_dirs.append(template_dir)
|
||||
return tuple(app_template_dirs)
|
||||
|
||||
# It won't change, so convert it to a tuple to save memory.
|
||||
app_template_dirs = tuple(app_template_dirs)
|
||||
|
||||
# At compile time, cache the directories to search.
|
||||
app_template_dirs = calculate_app_template_dirs()
|
||||
|
||||
|
||||
class Loader(BaseLoader):
|
||||
|
|
|
@ -33,6 +33,9 @@ def update_installed_apps(**kwargs):
|
|||
# Rebuild any AppDirectoriesFinder instance.
|
||||
from django.contrib.staticfiles.finders import get_finder
|
||||
get_finder.cache_clear()
|
||||
# Rebuild app_template_dirs cache.
|
||||
from django.template.loaders import app_directories as mod
|
||||
mod.app_template_dirs = mod.calculate_app_template_dirs()
|
||||
|
||||
|
||||
@receiver(setting_changed)
|
||||
|
|
Loading…
Reference in New Issue