diff --git a/django/template/autoreload.py b/django/template/autoreload.py index 84c8554165f8..082f0b00c400 100644 --- a/django/template/autoreload.py +++ b/django/template/autoreload.py @@ -17,16 +17,20 @@ def get_template_directories(): if not isinstance(backend, DjangoTemplates): continue - items.update(cwd / to_path(dir) for dir in backend.engine.dirs) + for directory in backend.engine.dirs: + if isinstance(directory, str) and directory.strip() == "": + continue + items.add(cwd / to_path(directory)) for loader in backend.engine.template_loaders: if not hasattr(loader, "get_dirs"): continue - items.update( - cwd / to_path(directory) - for directory in loader.get_dirs() - if not is_django_path(directory) - ) + for directory in loader.get_dirs(): + if isinstance(directory, str) and directory.strip() == "": + continue + if is_django_path(directory): + continue + items.add(cwd / to_path(directory)) return items diff --git a/tests/template_tests/test_autoreloader_empty_dirs.py b/tests/template_tests/test_autoreloader_empty_dirs.py new file mode 100644 index 000000000000..bbf72e5cae56 --- /dev/null +++ b/tests/template_tests/test_autoreloader_empty_dirs.py @@ -0,0 +1,20 @@ +from pathlib import Path + +from django.template import autoreload +from django.test import SimpleTestCase, override_settings + + +class TemplateAutoreloadEmptyDirsTests(SimpleTestCase): + @override_settings( + TEMPLATES=[ + { + "BACKEND": "django.template.backends.django.DjangoTemplates", + "DIRS": [""], + "APP_DIRS": True, + "OPTIONS": {}, + } + ] + ) + def test_empty_string_dirs_are_ignored(self): + directories = autoreload.get_template_directories() + self.assertNotIn(Path.cwd(), directories)