[Twisted-web] choosing between nodes

Alex Levy mesozoic at polynode.com
Sat Apr 10 17:08:14 MDT 2004


On Sat, 2004-04-10 at 18:27, Ellers wrote:
> <div id="content">
>  <span nevow:data="display" nevow:render="xml"/>
>  <span nevow:data="edit" nevow:render="xml">
>   <form>this is edit: more will go in here...</form>
>  </span>
>  <span nevow:data="save" nevow:render="xml/>
>   <p>you have saved: <span nevow:data="saved_data" nevow:render="xml/>
>  </span>
> </div>

First off, you don't want to be using span tags, you want to be using
div tags -- span tags aren't block elements, so they aren't supposed to
contain things like forms and paragraphs (as far as I understand).

Here's what you really want:

<div>
 <div nevow:render="display"></div>
 <div nevow:render="edit">
  <form nevow:render="edit_form"></form>
 </div>
 <div nevow:render="save">
  <p>
   You have saved: <span nevow:render="save_data"></span>
  </p>
 </div>
</div>

class MyPage:
    def render_display(self, ctx, data):
        if not show_display: return ctx.tag.clear()
        # More...

    def render_edit(self, ctx, data):
        if not show_edit: return ctx.tag.clear()
        # More...

    def render_save(self, ctx, data):
        if not show_save: return ctx.tag.clear()
        # More...

    # Implement other renderers (edit_form and save_data)...

    
There's nothing that says you have to use Nevow's predefined renderers;
for most complex rendering situations, you're going to want to write
your own render_* functions.

-- 
Alex Levy
WWW: http://mesozoic.geecs.org

"Never let your sense of morals prevent you from doing what is right."
-- Salvor Hardin, Isaac Asimov's _Foundation_

-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: This is a digitally signed message part
Url : http://pyramid.twistedmatrix.com/pipermail/twisted-web/attachments/20040410/cae0b9d6/attachment.bin


More information about the Twisted-web mailing list