summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDražen Odobašić <dodobas@quaternion.co>2018-07-31 15:57:11 +0200
committerTim Graham <timograham@gmail.com>2018-07-31 10:11:18 -0400
commit253f1b74daac6300f6670929bfc0540ce1e71f7a (patch)
tree3c7bfcecbf42c260597939bf64f0d7e44d31b339
parentc26f001967a546165c03f06e19ae2423999fd639 (diff)
[2.0.x] Fixed #29617 -- Fixed Template crash if template_string is lazy.
Regression in 3a148f958dddd97c1379081118c30fbede6b6bc4. Backport of 9f3b9ffd51c71d96728df9ee16f5a57c6f3b315d from master.
-rw-r--r--django/template/base.py2
-rw-r--r--docs/releases/2.0.8.txt3
-rw-r--r--tests/template_tests/test_base.py9
3 files changed, 12 insertions, 2 deletions
diff --git a/django/template/base.py b/django/template/base.py
index a90f8bfdd9..ba537df091 100644
--- a/django/template/base.py
+++ b/django/template/base.py
@@ -156,7 +156,7 @@ class Template:
self.name = name
self.origin = origin
self.engine = engine
- self.source = template_string
+ self.source = str(template_string) # May be lazy.
self.nodelist = self.compile_nodelist()
def __iter__(self):
diff --git a/docs/releases/2.0.8.txt b/docs/releases/2.0.8.txt
index c83a60cf81..16f4f4aede 100644
--- a/docs/releases/2.0.8.txt
+++ b/docs/releases/2.0.8.txt
@@ -11,3 +11,6 @@ Bugfixes
* Fixed a regression in Django 2.0.7 that broke the ``regex`` lookup on MariaDB
(even though MariaDB isn't officially supported) (:ticket:`29544`).
+
+* Fixed a regression where ``django.template.Template`` crashed if the
+ ``template_string`` argument is lazy (:ticket:`29617`).
diff --git a/tests/template_tests/test_base.py b/tests/template_tests/test_base.py
index 5320af5e9a..9ab8c4e6c6 100644
--- a/tests/template_tests/test_base.py
+++ b/tests/template_tests/test_base.py
@@ -1,5 +1,12 @@
-from django.template.base import VariableDoesNotExist
+from django.template import Context, Template, VariableDoesNotExist
from django.test import SimpleTestCase
+from django.utils.translation import gettext_lazy
+
+
+class TemplateTests(SimpleTestCase):
+ def test_lazy_template_string(self):
+ template_string = gettext_lazy('lazy string')
+ self.assertEqual(Template(template_string).render(Context()), template_string)
class VariableDoesNotExistTests(SimpleTestCase):