[Twisted-web] [Nevow] changing the attributes of a node
Manlio Perillo
manlio_perillo at libero.it
Tue Jul 25 06:58:58 CDT 2006
Manlio Perillo ha scritto:
> Hi.
>
> I need to set/unset an attribute (checked) on a <input type="checkbox">
> element (in a xml template).
>
> I'm using IQ.onePattern, but the problem is that the node is "removed"
> from the "stan context".
>
> Now I'm doing this from my render function:
>
Sorry, the example was wrong.
Here is my template:
<!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="en" xml:lang="en">
<head>
<title>Test</title>
</head>
<body>
<form action="update" method="post">
<table>
<caption />
<thead />
<tbody n:render="sequence" n:data="list">
<tr n:pattern="item" n:render="item">
<td><n:slot name="x" /></td>
<td>
<input n:pattern="checked" type="checkbox">
<n:attr name="name"><n:slot name="x" /></n:attr>
</input>
</td>
</tr>
</tbody>
</table>
<p>
<input class="button" type="submit" value="update" />
<input class="button" type="reset" value="reset" />
</p>
</form>
</body>
</html>
And my code:
from nevow import rend, loaders, inevow, static, url, tags
class Page(rend.Page):
docFactory = loaders.xmlfile("node.xhtml")
def data_list(self, ctx, data):
return [1, 2, 3]
def render_item(self, ctx, data):
ctx.fillSlots("x", data)
checked = ctx.tag.onePattern("checked")
if data > 1 :
checked.attributes["checked"] = "true"
ctx.tag.children[-1] = checked
return ctx.tag
from twisted.cred import portal, checkers, credentials
from twisted.application import service, strports
from nevow import appserver
application = service.Application("test")
site = appserver.NevowSite(Page())
addr = "tcp:80:interface=127.0.0.1"
strports.service(addr, site).setServiceParent(application)
The code now works, but this is an hack (because I have to know where to
put the node).
Is there a better solution?
Thanks and regards Manlio Perillo
More information about the Twisted-web
mailing list