jinja2 load template from string: TypeError: no loader for this environment specified

jinja2 load template from string: TypeError: no loader for this environment specified

我在 Flask 中使用 Jinja2。我想从一个字符串中渲染一个模板。我尝试了以下两种方法:

 rtemplate = jinja2.Environment().from_string(myString)
 data = rtemplate.render(**data)

 rtemplate = jinja2.Template(myString)
 data = rtemplate.render(**data)

然而两种方法return:

TypeError: no loader for this environment specified

我查看了手册和这个url:https://gist.github.com/wrunk/1317933

然而,当使用字符串时,select 没有指定加载程序。

您可以在 Environment 中提供 loader 来自 that list

from jinja2 import Environment, BaseLoader

rtemplate = Environment(loader=BaseLoader).from_string(myString)
data = rtemplate.render(**data)

编辑:问题出在 myString,它有 {% include 'test.html' %} 并且 Jinja2 不知道从哪里获取模板。

更新

正如@iver56 所指出的,最好是:

rtemplate = Environment(loader=BaseLoader()).from_string(myString)

当我来到这个问题时,我想要FileSystemLoader

from jinja2 import Environment, FileSystemLoader
with open("templates/some_template.html") as f:
    template_str = f.read()
template = Environment(loader=FileSystemLoader("templates/")).from_string(template_str)
html_str = template.render(default_start_page_lanes=default_start_page_lanes,
                           **data)