summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Graham <timograham@gmail.com>2017-02-11 06:51:57 -0500
committerGitHub <noreply@github.com>2017-02-11 06:51:57 -0500
commitfe2d2884345e1e6a1daadd76e9404c62791ab589 (patch)
treeb07b3dee22f17a846461c8c7037301d9055250f8
parent0595bca221825c0c6bd572a32f3bf9eff7069328 (diff)
Fixed #27722 -- Reallowed using django.Template in {% include %}.
-rw-r--r--django/template/loader_tags.py3
-rw-r--r--tests/template_tests/syntax_tests/test_include.py7
-rw-r--r--tests/template_tests/templates/include_tpl.html1
3 files changed, 10 insertions, 1 deletions
diff --git a/django/template/loader_tags.py b/django/template/loader_tags.py
index de2338ad12..7b4de9a7d7 100644
--- a/django/template/loader_tags.py
+++ b/django/template/loader_tags.py
@@ -180,6 +180,9 @@ class IncludeNode(Node):
if template is None:
template = context.template.engine.get_template(template_name)
cache[template_name] = template
+ # Use the base.Template of a backends.django.Template.
+ elif hasattr(template, 'template'):
+ template = template.template
values = {
name: var.resolve(context)
for name, var in self.extra_context.items()
diff --git a/tests/template_tests/syntax_tests/test_include.py b/tests/template_tests/syntax_tests/test_include.py
index 1ef76c7011..904209ea8b 100644
--- a/tests/template_tests/syntax_tests/test_include.py
+++ b/tests/template_tests/syntax_tests/test_include.py
@@ -1,7 +1,7 @@
import warnings
from django.template import (
- Context, Engine, TemplateDoesNotExist, TemplateSyntaxError,
+ Context, Engine, TemplateDoesNotExist, TemplateSyntaxError, loader,
)
from django.test import SimpleTestCase, ignore_warnings
from django.utils.deprecation import RemovedInDjango21Warning
@@ -277,6 +277,11 @@ class IncludeTests(SimpleTestCase):
output = outer_tmpl.render(ctx)
self.assertEqual(output, 'This worked!')
+ def test_include_from_loader_get_template(self):
+ tmpl = loader.get_template('include_tpl.html') # {% include tmpl %}
+ output = tmpl.render({'tmpl': loader.get_template('index.html')})
+ self.assertEqual(output, 'index\n\n')
+
def test_include_immediate_missing(self):
"""
#16417 -- Include tags pointing to missing templates should not raise
diff --git a/tests/template_tests/templates/include_tpl.html b/tests/template_tests/templates/include_tpl.html
new file mode 100644
index 0000000000..7a8374df51
--- /dev/null
+++ b/tests/template_tests/templates/include_tpl.html
@@ -0,0 +1 @@
+{% include tmpl %}