[Twisted-Python] how to get form values in woven?
Mike Mueller
pyp at gmx.net
Fri Jan 9 05:38:00 MST 2004
At 05:16 09.01.2004 +0100, I wrote:
>....
>
>There are several problems with this.
>
>1.) wchild_processMyForm gets called twice every time the submit button is hit
>2.) for the first call the method is post for, the second it is get
>3.) arg is always {}, so nothing to process
>
>Obviously, I am doing something wrong. Basically I just want to echo back
>the name/values pairs that where entered into the form. How do I do this
>with woven?
I took me while but I found the problems:
1.) <form action="processMyForm" method="post"> must be <form
action="processMyForm/" method="post">
and
2.) <input type="text" id="Text1"/> must be <input type="text" name="Text1"/>
The working script looks like this:
from twisted.application import service, internet
from twisted.web.woven import page
from twisted.web import server, resource
class FirstPage(page.Page):
template = """<html>
<head>
<title>First Form</title>
</head>
<body>
<h3>First Form</h3>
<form action="processMyForm/" method="post">
<p>
Text1:
<input type="text" name="Text1"/><br/>
Text2:
<input type="text" name="Text2"/><br/>
<input type="submit" value="Send"/>
</p>
</form>
</body>
</html>
"""
def initialize(self, *args, **kwargs):
self.numberOfProcessCalls = 0
def wchild_processMyForm(self, request):
self.numberOfProcessCalls += 1
keysValues = []
for k, v in request.__dict__.items():
keysValues.append('%s:\t %s' %(k,v))
model = {'keys-values': keysValues,
'number':self.numberOfProcessCalls}
return page.Page(model, template=
"""<html>
<body>
Number of calls:
<p model="number" view="Text" />
<h3>arg keys: values</h3>
<div model="keys-values" view="List">
<p pattern="listItem" view="Text" />
</div>
</body>
</html>""")
p = FirstPage()
application = service.Application('SimpleForm')
internet.TCPServer(8088,
server.Site(resource.IResource(p))).setServiceParent(service.IServiceCollection(application))
Mike
More information about the Twisted-Python
mailing list