diff --git a/django/template/autoreload.py b/django/template/autoreload.py index 18570b5633..be53693e9d 100644 --- a/django/template/autoreload.py +++ b/django/template/autoreload.py @@ -18,7 +18,7 @@ def get_template_directories(): if not isinstance(backend, DjangoTemplates): continue - items.update(Path.cwd() / to_path(dir) for dir in backend.engine.dirs) + items.update(Path.cwd() / to_path(dir) for dir in backend.engine.dirs if dir) for loader in backend.engine.template_loaders: if not hasattr(loader, 'get_dirs'): @@ -26,7 +26,7 @@ def get_template_directories(): items.update( Path.cwd() / to_path(directory) for directory in loader.get_dirs() - if not is_django_path(directory) + if directory and not is_django_path(directory) ) return items diff --git a/docs/releases/3.2.13.txt b/docs/releases/3.2.13.txt index 53de2645c4..c26a969f95 100644 --- a/docs/releases/3.2.13.txt +++ b/docs/releases/3.2.13.txt @@ -4,4 +4,12 @@ Django 3.2.13 release notes *April 11, 2022* -Django 3.2.13 fixes two security issues with severity "high" in 3.2.12. +Django 3.2.13 fixes two security issues with severity "high" in +3.2.12 and a regression in 3.2.4. + +Bugfixes +======== + +* Fixed a regression in Django 3.2.4 that caused the auto-reloader to no longer + detect changes when the ``DIRS`` option of the ``TEMPLATES`` setting + contained an empty string (:ticket:`33628`). diff --git a/tests/template_tests/test_autoreloader.py b/tests/template_tests/test_autoreloader.py index d6ece4cc6d..0a909bfdd3 100644 --- a/tests/template_tests/test_autoreloader.py +++ b/tests/template_tests/test_autoreloader.py @@ -64,6 +64,17 @@ class TemplateReloadTests(SimpleTestCase): autoreload.reset_loaders() self.assertEqual(mock_reset.call_count, 2) + @override_settings( + TEMPLATES=[ + { + "DIRS": [""], + "BACKEND": "django.template.backends.django.DjangoTemplates", + } + ] + ) + def test_template_dirs_ignore_empty_path(self): + self.assertEqual(autoreload.get_template_directories(), set()) + @override_settings( TEMPLATES=[{ 'DIRS': [