[Twisted-web] Re: Page object design: wrapping a dictionary
containing data
Donovan Preston
dp at ulaluma.com
Mon Jan 24 08:22:00 MST 2005
On Jan 23, 2005, at 2:24 AM, Michael Hudson wrote:
> Mary Gardiner <mary-twisted at puzzling.org> writes:
>
>> 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?
Model path notation (/ and ..) are not yet supported by Nevow. But you
don't need model path notation to do what you want. If all you want to
do is pass a dict to the Page and have template directives locate data
in that dict, you don't have to do anything at all:
rend.Page(
dict(one=1, two=2),
docFactory=loaders.xmlstr(
"""<html xmlns:n="http://nevow.com/ns/nevow/0.1">
<div n:render="string" n:data="one" />
<span n:render="string" n:data="two" />
</html>""")).renderSynchronously()
<html><div>1</div><span>2</span></html>
Is it really that hard to figure out that things like this are
possible? :-(
dp
More information about the Twisted-web
mailing list