我需要实现什么来向 repoze.bfg 添加新的模板语言?框架会发送我的插件绝对路径还是包相对路径,或者两者都取决于?
1 回答
http://svn.repoze.org/repoze.bfg.jinja2/trunk/repoze/bfg/jinja2/上的包为 BFG 提供了附加的 Jinja2 绑定。基本上,您确实创建了一个这样的包,然后允许人们将其连接到他们的系统中。
有两个级别的集成。第一个只是一个导入级别的集成,它允许人们执行以下操作:
从 my.template.system 导入 render_template_to_response
def aview(request): return render_template_to_response('some/relative/path.myt')
在 repoze.bfg.jina2 中使用 render_template* 方法,将它们替换为您喜欢的模板系统的类似方法会给您这个。
另一个集成级别是允许您的模板系统用作“渲染器”。例如,这允许:
@bfg_view(renderer="some/relative/path.myt") def aview(request): return {'a':1}
为此,模仿 repoze.bfg.jinja2 中的“renderer_factory”函数,然后让人们通过“config.add_renderer(renderer_factory, '.myt')”(必须)或通过包含 ZCML 在他们的配置中添加这个渲染器在他们的 ZCML 中随您的包一起发送的文件。