Fixed #1650: the {% extends %} tag now can extend a Template object passed into the context. Thanks, clelland@gmail.com.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@3465 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
6537401ca4
commit
847b1ed54e
|
@ -50,6 +50,8 @@ class ExtendsNode(Node):
|
|||
if self.parent_name_expr:
|
||||
error_msg += " Got this from the %r variable." % self.parent_name_expr #TODO nice repr.
|
||||
raise TemplateSyntaxError, error_msg
|
||||
if hasattr(parent, 'render'):
|
||||
return parent
|
||||
try:
|
||||
source, origin = find_template_source(parent, self.template_dirs)
|
||||
except TemplateDoesNotExist:
|
||||
|
@ -137,8 +139,9 @@ def do_extends(parser, token):
|
|||
|
||||
This tag may be used in two ways: ``{% extends "base" %}`` (with quotes)
|
||||
uses the literal value "base" as the name of the parent template to extend,
|
||||
or ``{% extends variable %}`` uses the value of ``variable`` as the name
|
||||
of the parent template to extend.
|
||||
or ``{% extends variable %}`` uses the value of ``variable`` as either the
|
||||
name of the parent template to extend (if it evaluates to a string,) or as
|
||||
the parent tempate itelf (if it evaluates to a Template object).
|
||||
"""
|
||||
bits = token.contents.split()
|
||||
if len(bits) != 2:
|
||||
|
|
|
@ -363,10 +363,14 @@ extends
|
|||
|
||||
Signal that this template extends a parent template.
|
||||
|
||||
This tag may be used in two ways: ``{% extends "base.html" %}`` (with quotes)
|
||||
uses the literal value "base.html" as the name of the parent template to
|
||||
extend, or ``{% extends variable %}`` uses the value of ``variable`` as the
|
||||
name of the parent template to extend.
|
||||
This tag may be used in two ways:
|
||||
|
||||
* ``{% extends "base.html" %}`` (with quotes) uses the literal value
|
||||
"base.html" as the name of the parent template to extend
|
||||
|
||||
* ``{% extends variable %}`` uses the value of ``variable`` as either the
|
||||
name of the parent template to extend (if it evaluates to a string,) or
|
||||
as the parent tempate itelf (if it evaluates to a Template object).
|
||||
|
||||
See `Template inheritance`_ for more information.
|
||||
|
||||
|
|
|
@ -410,6 +410,12 @@ TEMPLATE_TESTS = {
|
|||
# Three-level inheritance with {{ block.super }} from parent and grandparent
|
||||
'inheritance23': ("{% extends 'inheritance20' %}{% block first %}{{ block.super }}b{% endblock %}", {}, '1_ab3_'),
|
||||
|
||||
# Inheritance from local context without use of template loader
|
||||
'inheritance24': ("{% extends context_template %}{% block first %}2{% endblock %}{% block second %}4{% endblock %}", {'context_template': template.Template("1{% block first %}_{% endblock %}3{% block second %}_{% endblock %}")}, '1234'),
|
||||
|
||||
# Inheritance from local context with variable parent template
|
||||
'inheritance25': ("{% extends context_template.1 %}{% block first %}2{% endblock %}{% block second %}4{% endblock %}", {'context_template': [template.Template("Wrong"), template.Template("1{% block first %}_{% endblock %}3{% block second %}_{% endblock %}")]}, '1234'),
|
||||
|
||||
### I18N ##################################################################
|
||||
|
||||
# {% spaceless %} tag
|
||||
|
|
Loading…
Reference in New Issue