[Twisted-Python] Dynamic web application using twisted.web.resource

Itamar Shtull-Trauring twisted at itamarst.org
Tue Jul 30 13:48:55 EDT 2002


Mukhsein Johari wrote:

> The thing is, I know I need to use twisted.web.resource but I'm not sure 
> _how_. How does this fit in with the .rpy file? I think I need to create my 
> modules and classes and then create an .rpy which acts as the 
> erm..'interface' to the modules and classes. Could someone give me some hints 
> and tips?

The model you're describing is just what Zope's ZPublisher and Quixote do. I 
would suggest using Zope, but if you feel it's too heavy then Quixote will 
likely be a perfect fit.

Another alternative, if you intend to use Twisted's other capabilities and 
thus want to use twisted.web, is something like this:


class PublisherResource(resource.Resource):

     isLeaf = 1

     def __init__(self, root):
         self.root = root

     def render(self, request):
         obj = self.root
         for p in request.postpath:
             # convert "/foo/bar" to self.root.foo.bar
             obj = getattr(obj, p)
         if not callable(obj):
              return "arg"
         else:
              return obj(request)

Of course, this is probably insecure, buggy, and may not even work, but 
that's the general idea of how to do it.






More information about the Twisted-Python mailing list