Визуализация шаблона Jinja2 в строку с макетом - PullRequest
0 голосов
/ 12 сентября 2018

Можно ли вернуть шаблон 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)

Конечно макет = макет не работает - это то, что яищу

спасибо

1 Ответ

0 голосов
/ 12 сентября 2018

Расширение обрабатывается загрузчиками, а не шаблонами, поэтому вам нужен загрузчик.Как насчет этого?

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...