[Twisted-web] nested nevow:data

James Y Knight foom at fuhm.net
Mon May 9 08:23:32 MDT 2005


On May 8, 2005, at 4:18 AM, Little wrote:
> How can i use nested nevow:data construction?
>

The next data is always looked up in the current data. At the top  
level, the current data is the page you're rendering, with its data_  
methods. As you saw, when you nest one inside another, the current  
data when looking up the inner data is the outer data, rather than  
the page.

A workaround is to use a renderer instead of a data directive. I  
believe something like this should work:

def render_getyeardata(self, ctx, data):
   d = runQuery("select * from ... where year="%s")

   def rememberIt(result):
     ctx.remember(result, inevow.IData)
     return ctx.tag
   d.addCallback(rememberIt)
   return d

Then in your page,
<div n:data="years" n:render="years">
  <div n:pattern="year">
    <table>
    <n:invisible render="getyeardata"><div n:render="year">
etc.

The real solution is to patch nevow to allow for some sort of data  
navigation, like data="/year", where the leading slash means "from  
the page". Someone was working on that, but I don't know where it  
went. It'd be good to have that capability built-in.

James



More information about the Twisted-web mailing list