Emanuele Pucciarelli napsal(a):
>
> Il giorno 29/lug/07, alle ore 22:48, Tomas Kopecek ha scritto:
>
>> I know, it's syntactical nonsense. But does anybody know about some
>> way
>> how to combine variable content with string content? Is it possible?
>>
>> For example, very crude way could be something like
>>
>> {% img %} {{BASE_URL}}/path/z.gif {% endimg %}
>
> Maybe something like {% img base_url "path/z.gif" %}: let string
> content be surrounded by double quotes, and let the tag join
> everything for you.
>
> Code:
>
> from django.template import Node, TemplateSyntaxError, Library
>
> register = Library()
>
> class MixedNode(Node):
> class Variable(object):
> def __init__(self, name):
> self.name = name
> def __str__(self):
> return self.name
> def __init__(self, args):
> self.parameters = [
> [self.Variable(arg),
> arg.rstrip('"').lstrip('"')][arg[0] == arg
> [-1] == '"']
> for arg in args]
> def get_param(self, i, context):
> if isinstance(i, self.Variable):
> return context[str(i)]
> else:
> return i
> def get_string(self, context):
> return ''.join([self.get_param(param, context) for param in
> self.parameters])
>
> class ImageNode(MixedNode):
> def render(self, context):
> return '<img src="%s"/>' % self.get_string(context)
>
> def do_img(parser, token):
> arglist = token.split_contents()
> if len(arglist) < 2:
> raise TemplateSyntaxError, "%r tag requires at least one
> argument"
> % token.contents.split()[0]
> return ImageNode(arglist[1:])
>
> register.tag('img', do_img)
>
> (you can then subclass MixedNode for pretty much everything...)
>
> Regards,
>
It looks like a good idea, thanks.
--
Tomas Kopecek
e-mail: permonik at mesias.brnonet.cz
ICQ: 114483784
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Django users" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/django-users?hl=en
-~----------~----~----~----~------~----~------~--~---