summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpriyank.panchal <priyankpanchal872000@gmail.com>2023-07-22 17:36:35 +0530
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2023-08-09 09:09:52 +0200
commit439242c5943e16dd5a3a68fadac76e5e723eb323 (patch)
tree1853726fd01de21db2a96222858cc1dbf6c0d6b3
parente02fc588893485e5f5e509cdb67c63d8e1a45b31 (diff)
Fixed #34692 -- Made autoreloader reset cached template loader for default renderer.
-rw-r--r--django/template/autoreload.py7
-rw-r--r--tests/template_tests/test_autoreloader.py17
2 files changed, 24 insertions, 0 deletions
diff --git a/django/template/autoreload.py b/django/template/autoreload.py
index f3fd704031..01dd564da4 100644
--- a/django/template/autoreload.py
+++ b/django/template/autoreload.py
@@ -31,12 +31,19 @@ def get_template_directories():
def reset_loaders():
+ from django.forms.renderers import get_default_renderer
+
for backend in engines.all():
if not isinstance(backend, DjangoTemplates):
continue
for loader in backend.engine.template_loaders:
loader.reset()
+ backend = get_default_renderer().engine
+ if isinstance(backend, DjangoTemplates):
+ for loader in backend.engine.template_loaders:
+ loader.reset()
+
@receiver(autoreload_started, dispatch_uid="template_loaders_watch_changes")
def watch_for_template_changes(sender, **kwargs):
diff --git a/tests/template_tests/test_autoreloader.py b/tests/template_tests/test_autoreloader.py
index b8c16961bf..4fd7549a70 100644
--- a/tests/template_tests/test_autoreloader.py
+++ b/tests/template_tests/test_autoreloader.py
@@ -56,6 +56,23 @@ class TemplateReloadTests(SimpleTestCase):
self.assertIsNone(autoreload.template_changed(None, Path(__file__)))
mock_reset.assert_not_called()
+ @mock.patch("django.forms.renderers.get_default_renderer")
+ def test_form_template_reset_template_change(self, mock_renderer):
+ template_path = Path(__file__).parent / "templates" / "index.html"
+ self.assertIs(autoreload.template_changed(None, template_path), True)
+ mock_renderer.assert_called_once()
+
+ @mock.patch("django.template.loaders.cached.Loader.reset")
+ def test_form_template_reset_template_change_reset_call(self, mock_loader_reset):
+ template_path = Path(__file__).parent / "templates" / "index.html"
+ self.assertIs(autoreload.template_changed(None, template_path), True)
+ mock_loader_reset.assert_called_once()
+
+ @mock.patch("django.forms.renderers.get_default_renderer")
+ def test_form_template_reset_non_template_change(self, mock_renderer):
+ self.assertIsNone(autoreload.template_changed(None, Path(__file__)))
+ mock_renderer.assert_not_called()
+
def test_watch_for_template_changes(self):
mock_reloader = mock.MagicMock()
autoreload.watch_for_template_changes(mock_reloader)