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)