Python 在没有烧瓶上下文的情况下呈现jinja2模板
我有一个Flask应用程序,它调用Flask.render_模板,当从FlaskPython 在没有烧瓶上下文的情况下呈现jinja2模板,python,flask,jinja2,Python,Flask,Jinja2,我有一个Flask应用程序,它调用Flask.render_模板,当从Flaskhttp请求调用它时,不会出现问题 我需要同样的方法在flask之外工作(从python后端程序) 我可以使用jinja2api,但我希望在两种上下文(flask和命令行)中使用相同的方法。您需要在应用程序上下文中呈现它。在后端代码中导入应用程序并执行以下操作 with app.app_context(): data = render_template(path, **context) 如果您想完全绕过fl
http请求
调用它时,不会出现问题
我需要同样的方法在flask之外工作(从python后端程序)
我可以使用
jinja2api
,但我希望在两种上下文(flask和命令行)中使用相同的方法。您需要在应用程序上下文中呈现它。在后端代码中导入应用程序并执行以下操作
with app.app_context():
data = render_template(path, **context)
如果您想完全绕过
flask
并使用纯Jinja
来呈现模板,您可以这样做
import jinja2
def render_jinja_html(template_loc,file_name,**context):
return jinja2.Environment(
loader=jinja2.FileSystemLoader(template_loc+'/')
).get_template(file_name).render(context)
然后你可以调用这个函数来呈现你的html,我使用的是以下代码:
import jinja2
template_values = {
'value_name_in_html': value_name_in_python,
}
template = JINJA_ENVIRONMENT.get_template("file_patch")
self.response.write(template.render(template_values))
更好的是,只需将Flask自己的默认jinja环境与app.jinja_env一起使用即可。这是因为没有设置jinja_环境。我该怎么设置呢?嗨@blissweb,很抱歉我已经四年没有使用Jinja了,所以这个信息现在不在我的脑海中。如果我今天晚些时候有机会,我会看一下,然后再给你回复。
import jinja2
template_values = {
'value_name_in_html': value_name_in_python,
}
template = JINJA_ENVIRONMENT.get_template("file_patch")
self.response.write(template.render(template_values))