我具有長頸瓶的應用程序,當它被從瓶中http request
調用沒有問題調用flask.render_template
。渲染Jinja2的模板而不燒瓶方面
我需要同樣的方法來瓶外工作(從蟒蛇後端程序)
resolved_template = render_template(template_relative_path, **kwargs)
我可以使用jinja2 api
,但我想同樣的方法來工作,在兩種情況下(燒瓶和命令行)
我具有長頸瓶的應用程序,當它被從瓶中http request
調用沒有問題調用flask.render_template
。渲染Jinja2的模板而不燒瓶方面
我需要同樣的方法來瓶外工作(從蟒蛇後端程序)
resolved_template = render_template(template_relative_path, **kwargs)
我可以使用jinja2 api
,但我想同樣的方法來工作,在兩種情況下(燒瓶和命令行)
你需要使它在一個應用程序上下文。在您的後端代碼中導入您的應用並執行以下操作。
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
更重要的是,只要用瓶本身的默認神社環境'app.jinja_env'。 – 0x24a537r9
我使用的是這樣的代碼:
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中運行時,此方法會導致db.session.rollbak()。所以如果你有一個正在進行的交易,你會想避免創建一個新的上下文。 –