[Twisted-web] Alternative to <nevow:attr>

Samuel Reynolds sam at SpinwardStars.com
Tue Oct 19 07:36:06 MDT 2004

At 2004-10-19 12:42 AM -0700, you wrote:
>Ok, so currently if you want dynamic stuff to happen in an attribute you
>have to do something along the lines of this.
><a render="mylink">
>     <nevow:attr name="href">
>         <nevow:slot name="link" />
>     </nevow:attr>
>     <nevow:slot name="label" />
>def render_mylink(self, ctx, data):
>         ctx.fillSlots('link', data[0])
>         ctx.fillSlots('label', data[1])
>         return ctx.tag
>Which is horrendously ugly and difficult to explain to pretty much
>anyone.  Now, there are plenty of other solutions to this problem, but
>none of them provide the flexability for the template author as
><nevow:attr> and <nevow:slot> do.

I haven't started using nevow:attr yet. I've done some
straightforward string substitutions. Anathema to the
Twisted Way, I suspect, but it works.

An example from a working application:

<a href='/daily/%s' nevow:data='today'

[In Renderer]
def render_interpolateHref(self, context, data):
     Interpolate data into href attribute of tag.

     Href attribute is assumed to contain a '%s' formatting spec.
     tag = context.tag()
     href = tag.attributes['href']
     tag.attributes['href'] = href % str(data)
     return tag


- Sam

Spinward Stars, LLC                        Samuel Reynolds
Software Consulting and Development           303-805-1446
http://SpinwardStars.com/            sam at SpinwardStars.com 

More information about the Twisted-web mailing list