use*_*780 16 python jinja2 flask
我在Flask中使用Jinja2.我想从字符串中呈现模板.我尝试了以下两种方法:
rtemplate = jinja2.Environment().from_string(myString)
data = rtemplate.render(**data)
Run Code Online (Sandbox Code Playgroud)
和
rtemplate = jinja2.Template(myString)
data = rtemplate.render(**data)
Run Code Online (Sandbox Code Playgroud)
但是两种方法都返回:
TypeError: no loader for this environment specified
Run Code Online (Sandbox Code Playgroud)
我检查了手册和这个网址:https://gist.github.com/wrunk/1317933
但是,在使用字符串时,没有指定选择加载器.
vis*_*ell 36
您可以提供loader在Environment从该列表
from jinja2 import Environment, BaseLoader
rtemplate = Environment(loader=BaseLoader).from_string(myString)
data = rtemplate.render(**data)
Run Code Online (Sandbox Code Playgroud)
编辑:问题是myString,它有{% include 'test.html' %}和Jinja2不知道从哪里获取模板.
UPDATE
正如@ iver56所说,最好是:
rtemplate = Environment(loader=BaseLoader()).from_string(myString)
Run Code Online (Sandbox Code Playgroud)
Mar*_*oma 10
当我遇到这个问题时,我想要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)
Run Code Online (Sandbox Code Playgroud)