In Sat, 2009-09-19 at 09:40 +0200, Wichert Akkerman wrote:
> On 2009-9-16 21:06, Iain Duncan wrote:
> >
> > Hi folks, I have not built enough pylons to be know how to switch
> > templating languages beyond mako and genshi, but I'm interested in using
> > Chameleon. Has anyone got any examples up of what one needs to do to use
> > Chameleon?
Thanks Wichert, I've hit some problems here, and muddled along a bit, if
you ( or someone ) can check this that would be great.
>
> In config/environment.py:
>
> from genshi.template import TemplateLoader as GenshiTemplateLoader
I assume I'm also supposed to add??
from chameleon.zpt.loader import TemplateLoader
>
> def load_environment(global_conf, app_conf):
> ...
> ...
>
> # Create the chameleon TemplateLoader
> config['pylons.app_globals'].pt_loader = TemplateLoader(
> paths['templates'], auto_reload=True)
>
> Add a new file in lib (mine is called lib/pt.py):
>
> from pylons.templating import pylons_globals
> from pylons.templating import cached_template
>
>
> def render_pt(template_name, cache_key=None, cache_type=None,
> cache_expire=None):
> """Render a page template with z3c.pt."""
>
> def render_template():
> globs = pylons_globals()
> template = globs["app_globals"].pt_loader.load(template_name)
> return template(**globs)
>
> return cached_template(template_name, render_template,
> cache_key=cache_key,
> cache_type=cache_type, cache_expire=cache_expire)
>
>
> def render_text(template_name, cache_key=None, cache_type=None,
> cache_expire=None):
> """Render a text template with z3c.pt."""
>
> def render_template():
> globs = pylons_globals()
> template = globs["app_globals"].pt_loader.load(template_name,
> format="text")
> return template(**globs)
>
> return cached_template(template_name, render_template,
> cache_key=cache_key,
> cache_type=cache_type, cache_expire=cache_expire)
>
>
> you can then use render_pt to render html/xml templates, and render_text
> to render text templates, exactly like you use other templating languages.
I copied the above in, and imported render_pt from lib/pt.py, but when I
try to render a template like so:
(in a controller)
def zpt(self):
"test of using zpt templates"
return render_pt("mytemplate.pt")
I get the following traceback, any help much appreciated.
File '/home/ymh/pylons_full/pylons_full/controllers/peek.py', line 50 in
zpt
File '/home/ymh/pylons_full/pylons_full/lib/pt.py', line 15 in render_pt
cache_key=cache_key, cache_type=cache_type, cache_expire=cache_expire)
File
'/home/ymh/lib/python2.5/site-packages/Pylons-0.9.7-py2.5.egg/pylons/templating.py',
line 249 in cached_template
return render_func()
File '/home/ymh/pylons_full/pylons_full/lib/pt.py', line 11 in
render_template
template = globs["app_globals"].pt_loader.load(template_name)
File
'/home/ymh/lib/python2.5/site-packages/chameleon.zpt-1.0.0-py2.5.egg/chameleon/zpt/loader.py',
line 11 in load
template.PageTemplateFile)
File
'/home/ymh/lib/python2.5/site-packages/chameleon.core-1.0.0-py2.5.egg/chameleon/core/loader.py',
line 8 in load
self.registry[args] = template = func(self, *args)
File
'/home/ymh/lib/python2.5/site-packages/chameleon.core-1.0.0-py2.5.egg/chameleon/core/loader.py',
line 39 in load
path, self.parser, auto_reload=self.auto_reload)
TypeError: __init__() takes exactly 2 non-keyword arguments (3 given)
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"pylons-discuss" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/pylons-discuss?hl=en
-~----------~----~----~----~------~----~------~--~---