[Twisted-web] Hello introductions to me and one of my pet projects
David J W
twistedwebmailinglist at ominian.net
Sun Oct 2 16:49:36 EDT 2011
Hello,
I've been using Twisted on and off now for about four years, mostly for
personal projects and some R&D work for a few startups. I've been a
semi-professional Python programmer for four years as well, unfortunately it
only makes up about 15-20% of my annual income. That said for Python web
development I was rather fond of Pylons and then moved from it to CherryPy.
With those two frameworks influencing me, I wanted a similar interface for
Twisted.Web and after a lot of trial and error I've got an alpha version
proof of concept that is simply called txWeb.
https://github.com/devdave/txWeb
Very briefly using an example from JCalderone's wonderful collection of
tutorial/examples:
http://jcalderone.livejournal.com/49707.html
Instead of doing
from twisted.web.server import Site
from twisted.web.resource import Resource
from twisted.internet import reactor
class FormPage(Resource):
def render_GET(self, request)
return '<html><body><form method="POST"><input name="the-field"
type="text" /></form></body></html>'
def render_POST(self, request):
return '<html><body>You submitted: %s</body></html>' %
(cgi.escape(request.args["the-field"][0]),)
root = Resource()
root.putChild("form", FormPage() )
factory = Site(root)
reactor.listenTCP(8880, factory)
reactor.run()
the alternative would be:
from txweb.core import Site
#from twisted.web.resource import Resource
from twisted.internet import reactor
import cgi
class Root(object):
def form(self, request):
return '<html><body><form action="/process" method="POST"><input
name="the-field" type="text" /></form></body></html>'
form.exposed = True
index = form
def process(self, request):
return '<html><body>You submitted: %s</body></html>' %
(cgi.escape(request.args["the-field"][0]),)
process.exposed = True
reactor.listenTCP(8880, Site(Root()))
reactor.run()
A cleaner version of the example above is available @
https://gist.github.com/1257921
My goals with txWeb isn't to replace the twisted.web Resource mechanism but
instead provide an alternative that friendlier towards those with experience
with Pylons/CherryPy/Django while avoiding duplicating anything that
twisted.web provides ( ex. File resources can be class attributes )
That all said, any critique's or constructive input is very much welcome.
So far I know the unit-tests need to be cleaned up, inside the routing
routeRequest method the wrapper OneTimeResource is created, used, and thrown
away which is somewhat wasteful as its a mostly stateless object. But I'm
not sure if I'm missing something big that could make txWeb unviable for
production use without some sort of major refactoring.
Thanks,
David W.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://twistedmatrix.com/pipermail/twisted-web/attachments/20111002/4a12c692/attachment.htm
More information about the Twisted-web
mailing list