[Twisted-Python] Re: twisted web, documentation
François Pinard
pinard at iro.umontreal.ca
Tue Apr 29 12:51:11 MDT 2003
[William Dode]
> [VAN DER HEIJDEN Maarten]
> > Being new to twisted, I didn't find in the documentation an example (in
> > DOM Template, widgets, woven or resource templates ), for implementing a
> > form. Someone has a link?
> this is an extended ReportRequest with form :
Thanks a lot, William.
Your example (quoted in full below, for reference) has been both useful and
instructive. I have a question, though. What is the purpose of `isLeaf'?
It does not seem to be called ever, when I run your example.
---------------------------------------------------------------------->
import twisted.web.resource
import cgi
from twisted.protocols import http
from twisted.web import resource,error
class ReportRequest(twisted.web.resource.Resource):
""" ReportRequest with forms and cookies """
def isLeaf(self):
return true
def render(self, request):
user = request.getUser()
password = request.getPassword()
if not user:
request.setResponseCode(401, 'Authentication needed')
request.setHeader('WWW-authenticate', 'Basic realm="enter new user and password"')
errpage = error.ErrorPage(http.UNAUTHORIZED,"Unauthorized","401 Authentication required")
return errpage.render(request)
session = request.getSession()
try:
if request.args["text"]!="":
session.text = request.args["text"]
session.touch()
except:
pass # no text arg
session_text = getattr(session,"text","init")
# create and increment cookie counter,
try:
counter = int(request.getCookie("counter"))
counter += 1
except:
counter = 0
request.addCookie("counter",counter)
cookies = request.received_cookies
args = request.args
path = request.path
_, host, port = request.getHost()
url = request.prePathURL()
uri = request.uri
secure = (request.isSecure() and "securely") or "insecurely"
return ("""\
<HTML>
<HEAD><TITLE>Welcome To Twisted Python Reporting</title></head>
<BODY><H1>Welcome To Twisted Python Reporting</H1>
<UL>
<LI>User : %(user)s
<LI>Password : %(password)s
<LI>The path to me is %(path)s
<LI>The host I'm on is %(host)s
<LI>The port I'm on is %(port)s
<LI>I was accessed %(secure)s
<LI>A URL to me is %(url)s
<LI>My URI to me is %(uri)s
<LI>Session text : %(session_text)s
<LI>Cookies (incremented in each reload): <pre>%(cookies)s</pre>
<LI>Form args : <pre>%(args)s</pre>
</UL>
<hr>
<h2>Testing args</h2>
Test args : <a href='?a=1&a=2&a=3&b=4'>?a=1&a=3&a=3&b=4</a><br>
Test forms with method=post enctype='multipart/form-data'
<form method=post enctype='multipart/form-data'>
<table>
<tr><td> text : </td><td> <input name=text type=text> </td></tr>
<tr><td> file : </td><td> <input name=file type=file> </td></tr>
<tr><td> select (multiple) : </td><td>
<select name=select multiple><option>one</option><option>two</option><option>three</option></select>
</td></tr></table>
<input type=submit></form>
</body>
</html>""" % vars())
----------------------------------------------------------------------<
--
François Pinard http://www.iro.umontreal.ca/~pinard
More information about the Twisted-Python
mailing list