将 Jinja2 模板渲染为带有布局的字符串

是否可以将 jinja2 模板也从 string 返回到带有布局的 string ?我知道这是可能的:


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 不起作用 - 这就是我要找的


慕少森
浏览 195回答 1
1回答

倚天杖

扩展由加载器而不是模板处理,因此您需要一个加载器。这样的事情怎么样?from jinja2 import DictLoader, Environment, Templatedef 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)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python