summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYogyaChugh <yogyachugh.coder@gmail.com>2025-03-22 18:13:26 +0530
committerSarah Boyce <42296566+sarahboyce@users.noreply.github.com>2025-03-24 17:05:58 +0100
commit7164f080474ef0213d1d6e625db647c45c36a5fb (patch)
tree3c76acd87cd7573d6931147c4385bff2bcd3436f
parent0b4f2d8d397dacb555b327435d1c815da59feda5 (diff)
Fixed #36271 -- Raised TemplateSyntaxError when using a relative template path with an unknown origin.
-rw-r--r--django/template/loader_tags.py7
-rw-r--r--tests/template_tests/syntax_tests/test_exceptions.py13
2 files changed, 19 insertions, 1 deletions
diff --git a/django/template/loader_tags.py b/django/template/loader_tags.py
index 36703b4782..c3eb66b577 100644
--- a/django/template/loader_tags.py
+++ b/django/template/loader_tags.py
@@ -257,6 +257,13 @@ def construct_relative_path(
# relative path.
return relative_name
+ if current_template_name is None:
+ # Unknown origin (e.g. Template('...').render(Context({...})).
+ raise TemplateSyntaxError(
+ f"The relative path {relative_name} cannot be evaluated due to "
+ "an unknown template origin."
+ )
+
new_name = posixpath.normpath(
posixpath.join(
posixpath.dirname(current_template_name.lstrip("/")),
diff --git a/tests/template_tests/syntax_tests/test_exceptions.py b/tests/template_tests/syntax_tests/test_exceptions.py
index b6d86ac42b..57c4fdb5e6 100644
--- a/tests/template_tests/syntax_tests/test_exceptions.py
+++ b/tests/template_tests/syntax_tests/test_exceptions.py
@@ -1,4 +1,4 @@
-from django.template import TemplateDoesNotExist, TemplateSyntaxError
+from django.template import Template, TemplateDoesNotExist, TemplateSyntaxError
from django.test import SimpleTestCase
from ..utils import setup
@@ -64,3 +64,14 @@ class ExceptionsTests(SimpleTestCase):
"""
with self.assertRaises(TemplateSyntaxError):
self.engine.render_to_string("exception05")
+
+ def test_unknown_origin_relative_path(self):
+ files = ["./nonexistent.html", "../nonexistent.html"]
+ for template_name in files:
+ with self.subTest(template_name=template_name):
+ msg = (
+ f"The relative path '{template_name}' cannot be evaluated due to "
+ "an unknown template origin."
+ )
+ with self.assertRaisesMessage(TemplateSyntaxError, msg):
+ Template(f"{{% extends '{template_name}' %}}")