是否可以将 jinja2 模板也从 string 返回到带有布局的 string ?我知道这是可能的:from jinja2 import Templatehtml = "{{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 不起作用 - 这就是我要找的
1 回答

倚天杖
TA贡献1828条经验 获得超3个赞
扩展由加载器而不是模板处理,因此您需要一个加载器。这样的事情怎么样?
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)
添加回答
举报
0/150
提交
取消