Django

Code

Changeset 7084

Show
Ignore:
Timestamp:
02/03/08 22:52:37 (10 months ago)
Author:
mtredinnick
Message:

Fixed #5124 -- Added a reasonable error when "extends" is not the first template tag. Patch from k0001.

Refs #6274.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • django/trunk/django/template/__init__.py

    r6974 r7084  
    290290 
    291291    def extend_nodelist(self, nodelist, node, token): 
     292        if (node.must_be_first and nodelist and 
     293                (not isinstance(nodelist[0], TextNode) or len(nodelist) > 2)): 
     294            raise TemplateSyntaxError("%r must be the first tag in the template." % node) 
    292295        nodelist.append(node) 
    293296 
     
    709712 
    710713class Node(object): 
     714    # Set this to True for nodes that must be first in the template (although 
     715    # they can be preceded by text nodes. 
     716    must_be_first = False 
     717 
    711718    def render(self, context): 
    712719        "Return the node rendered as a string" 
  • django/trunk/django/template/loader_tags.py

    r7082 r7084  
    3838 
    3939class ExtendsNode(Node): 
     40    must_be_first = True 
     41 
    4042    def __init__(self, nodelist, parent_name, parent_name_expr, template_dirs=None): 
    4143        self.nodelist = nodelist 
    4244        self.parent_name, self.parent_name_expr = parent_name, parent_name_expr 
    4345        self.template_dirs = template_dirs 
     46 
     47    def __repr__(self): 
     48        if self.parent_name_expr: 
     49            return "<ExtendsNode: extends %s>" % self.parent_name_expr.token 
     50        return '<ExtendsNode: extends "%s">' % self.parent_name 
    4451 
    4552    def get_parent(self, context):