On Aug 21, 2011, at 6:10 AM, Florian Lindner wrote:
Hello,
I want to build a simple webinterface for my application and decided to use twisted.web with its templating for that. This will be my first contact with twisted.
In that case, welcome to Twisted!
I had found a working example at [1].
That looks like an OK example. I see that <http://twistedmatrix.com/users/glyph/sphinx-preview-11.0pre1/projects/web/howto/twisted-templates.html> explains this in the abstract, but it's a documentation bug that it doesn't help you tie it all together. Please feel free to file that bug :).
Is there a way to render a template that involves less boiler plate code? In that example I had to create a template.Element class and a web.Ressource class for each page I want to render. The Ressource basically looks always the same for each page, just that it renders another Element class.
You can just make one Resource class that wraps an Element. There's no need to have a different class for every one. You might want to submit a patch to add such a class to Twisted, although I think requirements will differ between projects as far as what the features of such a class should be, so it might be best to wait on that until a few more projects can present examples of how they used it.
Is there a way to shortcut that a bit? My standard situation will be that I have a template file and an Element class containing the logic. These are "mounted" somewehre in the hierarchy (like with putChild).
You can either use putChild or write resources with appropriate getChild methods; which is better depends on your application. It might make sense to make a single Resource subclass that deals with rendering an element, and then subclass that in order to provide methods to retrieve children.
Sorry, I'm sure I'm lacking quite a bit of insight into twisted.
It sounds like you've got the basics, actually - just remember that it's all Python code, and you can use whatever programming techniques make your life easier. You don't need to find a magic solution to everything somewhere inside Twisted itself, just for it to work with Twisted :). -glyph