在没有 Flask 上下文的情况下渲染 jinja2 模板
render jinja2 template without a Flask context
我有一个 Flask 应用程序,当从 Flask http request
.
调用它时调用 flask.render_template
没有问题
我需要相同的方法在 Flask 之外工作(来自 python 后端程序)
resolved_template = render_template(template_relative_path, **kwargs)
我可以使用 jinja2 api
,但我希望在两种上下文(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 应用程序,当从 Flask http request
.
flask.render_template
没有问题
我需要相同的方法在 Flask 之外工作(来自 python 后端程序)
resolved_template = render_template(template_relative_path, **kwargs)
我可以使用 jinja2 api
,但我希望在两种上下文(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))