[Twisted-web] about macro and render

Valentino Volonghi aka Dialtone dialtone at divmod.com
Wed Feb 21 05:44:25 CST 2007



On Wed, 21 Feb 2007 12:32:08 +0100, Manlio Perillo <manlio_perillo at libero.it> wrote:
>Hi.
>
>I want to compose a page, using a main template.
>A simple solution is to use macros
>
>class Resource(rend.rend):
>   def macro_main(self, ctx):
>      return loaders.xmlfile(...)
>
>
>The macro_main method is called only once.
>
>However it seems that macros are going to be removed, moreover if I change 

Not to my knowledge, at least I'd be opposed/incline to re-implement them
because I use them extensively in all my projects.

>the child template, I have to reload the server.

Not really... just change the macro too with something like touch.

>A solution is to use a render (code not tested):
>
>class Resource(rend.rend):
>   template = ... # The child template to load
>
>   def macro_main(self, ctx):
>      return self.state.setdefault(
>               template, loaders.xmlfile(self.template)
>               )
>
>
>Here I'm storing the loader instance in a dictionary, to optimize template 
>loading.

Useless, loaders already have a cache.

>Is this solution as efficient as the one with macros?

macros are not a way to cache stuff, but to compose stuff dynamically at pre-compile time.



More information about the Twisted-web mailing list