在金字塔视图上动态加载jinja2模板

时间:2015-05-12 08:29:16

标签: jinja2 pyramid

我正在使用Pyramid模板引擎开发jinja2项目。在jinja2 documentation之后,我找到了一种从独特视图加载不同模板的方法。但考虑到模块pyramid_jinja2已在我的应用中配置了模板的默认路径。我想知道是否有另一种更优雅的方式来完成这项工作。这是我的方法:

from jinja2 import Environment, PackageLoader

@view_config(context=Test)
def test_view(request):
    env = Environment(loader=PackageLoader('project_name', 'templates'))
    template = env.get_template('section1/example1.jinja2')
    return Response(template.render(data={'a':1,'b':2}))

我可以从某个地方获取 pyramid_jinja2 环境的实例,这样我就不必再次在视图中设置模板的默认路径了吗?

1 个答案:

答案 0 :(得分:1)

以下就足够了:

  from pyramid.renderers import render

  template = "section/example1.jinja2"
  context = dict(a=1, b=2)
  body = render(template, context, request=request)

要配置加载,请执行__init__.py

  config.add_jinja2_search_path('project_name:templates', name='.jinja2', prepend=True)