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)
我在 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)