如何在Pyramid中更改模板引擎?

rob*_*les 2 python template-engine mustache pyramid

特别是我想使用pystache但是另一个模板引擎的任何指南应该足够好来设置它.

如果我理解正确,我必须在__init__.py我的金字塔应用程序中注册渲染器工厂.

config = Configurator(settings=settings)
config.add_renderer(None, 'pystache_renderer_factory')
Run Code Online (Sandbox Code Playgroud)

现在我需要创建渲染器工厂而不知道如何.

即使我找到有关如何添加模板引擎的文档,我也没有设置它.

rob*_*les 5

最后,我能够按照本指南添加pystache模板引擎:

https://groups.google.com/forum/#!searchin/pylons-discuss/add_renderer/pylons-discuss/Y4MoKwWKiUA/cyqldA-vHjkJ

我做了什么:

创建了文件mustacherenderer.py:

from pyramid.asset import abspath_from_asset_spec 
import pystache
import os 

def pystache_renderer_factory(info):
    template = os.path.join(abspath_from_asset_spec('myproj:templates', False),
                            info.name)
    f = open(template) 
    s = f.read() 
    f.close() 
    def _render(value, system):
        return pystache.render(s, value)
    return _render
Run Code Online (Sandbox Code Playgroud)

将此添加到__init__.py:

config.add_renderer('.pmt', 'myproj.mustacherenderer.pystache_renderer_factory')
Run Code Online (Sandbox Code Playgroud)

工作:)