为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕少森 2021-06-04 18:36:43
是否可以将 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)


查看完整回答
反对 回复 2021-06-16
  • 1 回答
  • 0 关注
  • 194 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号