如何将自定义模板标签传递给Jinja2 Template类?

时间:2013-11-27 10:58:12

标签: python python-2.7 jinja2

例如,我使用下一个代码(Jinja2 docs)将Jinja2附加到我的pythonic项目中:

from jinja2 import Template
template = Template(text_of_the_template)
template.render(**kwargs)

使用自定义模板标记的示例(来自here):

 from jinja2 import contextfunction

 @contextfunction
 def widget(context, template_name, **extra_context):
     t = jinja_env.get_template('widgets/' + template_name)
     ctx = dict(context.items())
     ctx.update(extra_context)
     return t.render(ctx)

 jinja_env.globals['widget'] = widget

# And then in the template:

{{ widget('last_tweets.html') }}

如何绑定Jinja2环境和上面的代码(Template类)?

1 个答案:

答案 0 :(得分:2)

您应该通过环境来获取模板,而不是使用jinja2.Template()来获取模板。

所以你会得到这样的东西:

template = jinja_env.from_string(text_of_the_template)
template.render(**kwargs)

这是dos:http://jinja.pocoo.org/docs/api/#jinja2.Environment.from_string