[Twisted-web] Re: [Twisted-Python] again on nested sequence
Manlio Perillo
manlio_perillo at libero.it
Mon Jul 17 12:18:13 CDT 2006
Manlio Perillo ha scritto:
> [...]
>
> <!DOCTYPE html
> PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
> <html xmlns="http://www.w3.org/1999/xhtml"
> xmlns:n="http://nevow.com/ns/nevow/0.1"
> lang="it" xml:lang="it">
> <head>
> <title>Nested sequence II</title>
> </head>
> <body>
> <form action="post" method="post">
> <ul n:render="sequence" n:data="control_list">
> <li n:pattern="item" n:render="control">
> <label><n:slot name="ctrl_label"/>
> <select n:render="option_list">
> <n:attr name="name"><n:slot name="ctrl_name" /></n:attr>
> <option n:pattern="item" n:render="option">
> <n:attr name="value"><n:slot name="opt_value" /></n:attr>
> <n:slot name="opt_label" />
> </option>
> </select>
> </label>
> </li>
> </ul>
> <input type="submit" value="send" />
> </form>
> </body>
> </html>
>
>
> class Main(rend.Page):
> addSlash = True
> docFactory = loaders.xmlfile('nestedsequence.xhtml')
>
> def data_control_list(self, ctx, data):
> return [('a', 'first'), ('b', 'second')]
>
> def render_option_list(self, ctx, data):
> option_list = [('1', 'uno'), ('2', 'due')]
> tag = ctx.tag
>
> pattern = inevow.IQ(ctx).patternGenerator("item")
> content = [pattern(data=option) for option in option_list]
>
> return ctx.tag.clear()[content]
>
> def render_control(self, ctx, data):
> print '*', data
> ctx.fillSlots('ctrl_label', data[1])
> ctx.fillSlots('ctrl_name', data[0])
>
> return ctx.tag
>
This is very strange.
In my real application (that should be equivalent to this one, only
names changes), the whole <option> node is ignored!
I can't understand why.
Thanks and regards Manlio Perillo
More information about the Twisted-web
mailing list