[Twisted-web] Page object design: wrapping a dictionary containing data

Matt Goodall matt at pollenation.net
Sun Jan 23 03:34:47 MST 2005


On Sun, 2005-01-23 at 10:27 +0000, Matt Goodall wrote:
> On Sun, 2005-01-23 at 20:12 +1100, Mary Gardiner wrote:
> > I've got a Page object that derives all its data from a dictionary, eg:
> > 
> > {
> >     'project_name': 'project',
> >     'project_description': 'hello',
> >     # ... you get the idea
> > }
> > 
> > What's a good way for the Page object to wrap that dictionary that
> > doesn't involve doing this:
> > 
> >     def data_name(self, ctx, data):
> >         return self.d['project_name']
> > 
> >     def data_description(self, ctx, data):
> >         return self.d['project_description']
> > 
> >     # and so on for every key in the dictionary
> > 
> > I vaguely recall that the equivalent of this used to be possible in
> > Woven:
> > 
> >     def data_project(self, ctx, data):
> >         return self.d
> > 
> > and then that the data items were accessible by (say)
> > stan.directive("project/project_name"). This doesn't look like its
> > supported in Nevow. Is this correct? What alternative designs are there
> > for something like this?
> 
> If a dict is the currently in scope data (the IData) for a template then
> nested data directives will look inside the dict (see
> accessors.DictionaryContainer for details):
> 
>         <div n:data="personAsDict">
>           <p n:data="name">...</p>
>           <p n:data="address">...</p>
>         </div>

The stan equivalent being, tags.p(data=tags.directive('name')).

> 
> In that example, the 'name' and 'address' directives are equivalent to
> personAsDict['name'] and personAsDict['address'] respectively.
> 
> There's also the mapping render (rend.mapping) That fills slots with the
> content of the dict:
> 
>         <div n:data="personAsDict" n:render="mapping">
>           <p><n:slot name="name" /></p>
>           <p><n:slot name="address" /></p>
>         </div>
> 
> Hope this helps.
> 
> Cheers, Matt
> 
> 
> _______________________________________________
> Twisted-web mailing list
> Twisted-web at twistedmatrix.com
> http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-web




More information about the Twisted-web mailing list