是否可以將 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
提交
取消