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

Python jinja2从字符串加载模板:TypeError:未指定此环境的加载程序,python,flask,jinja2,Python,Flask,Jinja2,我在烧瓶里用金甲2号。我想从字符串渲染模板。我尝试了以下两种方法: rtemplate = jinja2.Environment().from_string(myString) data = rtemplate.render(**data) 及 但是,这两种方法都返回: TypeError: no loader for this environment specified 我检查了手册和此url: 但是,在使用字符串时,没有指定要选择加载器的位置。您可以在环境中提供加载器 Edit:问题

我在烧瓶里用金甲2号。我想从字符串渲染模板。我尝试了以下两种方法:

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

但是,这两种方法都返回:

TypeError: no loader for this environment specified
我检查了手册和此url:


但是,在使用字符串时,没有指定要选择加载器的位置。

您可以在
环境中提供
加载器

Edit:问题在于
myString
,它有
{%include'test.html%}
,Jinja2不知道从哪里获取模板

更新

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

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

当我谈到这个问题时,我想:


尝试此操作时,我得到错误:AttributeError:“Environment”对象没有属性“get_source”@user3605780我稍微编辑了代码,但它没有更改任何内容,并且在我的机器上工作。您使用的是哪个版本的
jinja2
?我遇到了相同的错误,我使用的是2.7.3版,我刚刚升级到2.8版,然后出现了错误:TypeError:get_source()缺少1个必需的位置参数:“template”BaseLoader扩展了
对象,因此它有一个
\u init\u
函数。你是对的,
\uuuuu init\uuuuu
做的不多,但这不是这里的重点。关键是要有一个BaseLoader实例,而不仅仅是引用类。我不想太迂腐,我会想象
from_string
是一个类方法(即使用
@classmethod
装饰器声明),设计为从类调用。因为它是一个工厂方法,所以创建一个实例来调用它的方法并扔掉它肯定没有意义?好吧,也许我有点迂腐,但当创建实例很昂贵时,这可能很重要。
from jinja2 import Environment, BaseLoader

rtemplate = Environment(loader=BaseLoader).from_string(myString)
data = rtemplate.render(**data)
rtemplate = Environment(loader=BaseLoader()).from_string(myString)
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)