Python 在没有烧瓶上下文的情况下呈现jinja2模板

Python 在没有烧瓶上下文的情况下呈现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

我有一个Flask应用程序,它调用Flask.render_模板,当从Flask
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))