没有金字塔的变色龙宏

时间:2012-04-27 17:24:44

标签: python pyramid chameleon

这是我在Pyramid中使用的一些代码,用于将宏加载到我的Chameleon模板中:

@subscriber(BeforeRender)
def add_base_templates(event):
    """Define the base templates."""
    main_template = get_renderer('../templates/restaurant.pt').implementation()
    event.update({ 'main_template': main_template })

如果没有金字塔,我将如何实现同样的目标?例如,在此代码中:

from chameleon import PageTemplateFile

path = os.path.dirname(__file__)
lizard = PageTemplateFile(os.path.join(path, '..', 'emails', template+'.pt'))
html = lizard(**data)

1 个答案:

答案 0 :(得分:1)

让我们来看看你的代码做了什么;要在金字塔之外使用宏,你所要做的就是复制它。

  1. 当您在金字塔中调用.implementation()时,实质上是在检索加载了正确模板路径的PageTemplateFile实例。

  2. BeforeRender事件让您从视图中修改dict响应,并在add_base_templates事件处理程序中添加名为main_template的新条目。

    < / LI>

    将这两者结合使用可以在您自己的代码中获得相同的效果,并在调用main_template模板时传入lizard宏模板:

    from chameleon import PageTemplateFile
    
    path = os.path.dirname(__file__)
    main_template = PageTemplateFile(os.path.join(path, '..', 'templates', 'restaurant.pt'))
    lizard = PageTemplateFile(os.path.join(path, '..', 'emails', template+'.pt'))
    html = lizard(main_template=main_template, **data)
    

    这就是真的。