是否可以从字符串返回jinja2模板到具有布局的字符串? 我知道这样可能:
from jinja2 import Template
html = "{{var}}"
t = Template(html)
print t.render(var="X")
但是我需要使用像这样扩展的jinja模板
layout = "HEY {%block content%}{%endblock%}"
html = "{%block content%}{{var1}}{%endblock%}"
t = Template(html, layout=layout)
当然layout = layout不起作用-这就是我要寻找的
谢谢
答案 0 :(得分:0)
扩展是由加载程序而不是模板处理的,因此您需要一个加载程序。这样的事情怎么样?
from jinja2 import DictLoader, Environment, Template
def render_with_layout(template_string, layout, **kwargs):
loader = DictLoader({
'layout': layout, # wrap in Template() if necessary
'template': Template('{% extends "layout" %}' + template_string),
})
env = Environment(loader=loader)
return env.get_template('template').render(**kwargs)