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)