mirror of
				https://github.com/django/django.git
				synced 2025-10-30 17:16:10 +00:00 
			
		
		
		
	Properly app_template_dirs when INSTALLED_APPS change.
This commit is contained in:
		| @@ -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: | ||||
|     fs_encoding = sys.getfilesystemencoding() or sys.getdefaultencoding() | ||||
| 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) | ||||
|  | ||||
| # It won't change, so convert it to a tuple to save memory. | ||||
| app_template_dirs = tuple(app_template_dirs) | ||||
| 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(): | ||||
|         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) | ||||
|  | ||||
|  | ||||
| # 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) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user