blocksetter

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
class ContextVariableBlockSetter(template.Node):
    def __init__(self, variable, nodelist):
        self.variable = variable
        self.nodelist = nodelist

    def render(self, context):
        context[self.variable] = self.nodelist.render(context)
        return ""

@register.tag
def blockset(parser, node):
    bits = node.contents.split()
    if len(bits) != 2:
          raise template.TemplateSyntaxError, "'%s' tag takes one argument" % bits[0]
    nodelist = parser.parse(('endblockset',))
    parser.delete_first_token()
    return ContextVariableBlockSetter(bits[1], nodelist)

Comments

ubernostrum (on December 10, 2007):

Isn't this what Django's built-in with tag already does?

#

jerzyk (on December 10, 2007):

nope. totally different idea {% blockset url %}http://{{ myhost }}{% url myurl %}{% endblockset %}

then somewhere else etc.

#

(Forgotten your password?)

You may use Markdown syntax here, but raw HTML will be removed.