Fixed #27722 -- Reallowed using django.Template in {% include %}.

This commit is contained in:
Tim Graham 2017-02-11 06:51:57 -05:00 committed by GitHub
parent 0595bca221
commit fe2d288434
3 changed files with 10 additions and 1 deletions

View File

@ -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()

View File

@ -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

View File

@ -0,0 +1 @@
{% include tmpl %}