On 2009-9-24 07:53, Iain Duncan wrote:
>
> 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
Doh, that line should have read:
from chameleon.genshi.loader import TemplateLoader
> I assume I'm also supposed to add??
>
> from chameleon.zpt.loader import TemplateLoader
That depends. Personally I use chameleon.genshi since I prefer Genshi
syntax over zpt. If you want to use the Zope page template syntax you'll
want to replace chameleon.zpt.
>> 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)
Hm, the chameleon.zpt template has not seen as much love as the
chameleon.genshi version so it might have broken somewhere. Can you test
if chameleon.genshi works for you? If so I'll look at fixing up the
chameleon.zpt version.
Wichert.
--
Wichert Akkerman <[email protected]> It is simple to make things.
http://www.wiggy.net/ It is hard to make things simple.
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---