jinja2从字符串加载模板:TypeError:没有指定此环境的加载程序

时间:2016-09-02 09:15:29

标签: python flask jinja2

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

$payoneConfig

getAvailableMethods()

然而,两种方法都返回:

Payone_Core_Model_Config_Payment

我查看了手册和此网址:https://gist.github.com/wrunk/1317933

但是,在使用字符串时,没有指定选择加载程序。

2 个答案:

答案 0 :(得分:29)

您可以在that list

loader内提供Environment
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)

答案 1 :(得分:0)

当我遇到这个问题时,我想要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)