[Twisted-Python] twisted.web, url -> resource mapping and isLeaf questions
David
david at silveregg.co.jp
Tue Nov 30 01:07:17 EST 2010
Hi,
I am following "twisted in 60sec" series, but even the simple examples
are a bit unclear to me, especially w.r.t. url mapping. For example:
# assume the right imports...
class MainPage(Resource):
isLeaf = True
def render_GET(self, request):
return "somestring"
resource = MainPage()
factory = Site(resource)
reactor.listenTCP(8880, factory)
reactor.run()
I was expecting that accessing any other 'path' besides the main url
would cause 404, e.g. "http://localhost:8880/foo/bar", and I get the
same page instead.
I gather this is a consequence of the isLeaf setting set to be True,
because twisted.web stops as soon as it encounters MainPage in the
hierarchy and use that for rendering. Setting it to False seems to avoid
the page to be available at all. The solution I got instead is something
like:
class RootPage(Resource):
isLeaf = False
def render(self, request):
return "somestring"
def getChild(self, path, request):
if path:
return NoResource()
else:
return self
and adding new resources through putChild. Isn't there a more natural
way of doing things ?
cheers,
David
More information about the Twisted-Python
mailing list