Python 如何直接从Flask render_模板使用Jinja2扩展
我正在开发一个Flask应用程序,它工作得很好,直到我尝试向要呈现的模板添加以下行:Python 如何直接从Flask render_模板使用Jinja2扩展,python,flask,jinja2,Python,Flask,Jinja2,我正在开发一个Flask应用程序,它工作得很好,直到我尝试向要呈现的模板添加以下行: {% do totals.update({tier: 0}) %} 用于呈现模板的当前代码使用Flask的render\u template(): 显而易见的修复方法是将jinja2.ext.do扩展添加到jinja。我已经能够直接使用Jinja2成功地做到这一点,具体如下: from jinja2 import Environment, PackageLoader ENV = Environment(loa
{% do totals.update({tier: 0}) %}
用于呈现模板的当前代码使用Flask的render\u template()
:
显而易见的修复方法是将jinja2.ext.do
扩展添加到jinja。我已经能够直接使用Jinja2成功地做到这一点,具体如下:
from jinja2 import Environment, PackageLoader
ENV = Environment(loader=PackageLoader('ticket_app', 'templates'), extensions=['jinja2.ext.do'])
...
TEMP = ENV.get_template('div_' + div_id + '.html')
return TEMP.render(sales_new=sales_new, event_config=event_config)
但是,我不想直接使用Jinja2。。。应用程序之前只使用了Flask和render\u template()
,而render\u template()
在引擎盖下使用了Jinja2(据我所知),似乎应该可以让render\u template()
理解Jinja2.ext.do
扩展(或任何其他扩展)
到目前为止,我已经尝试了以下方法:
app = Flask(__name__)
app.config['TEMPLATES_AUTO_RELOAD'] = True
app.config['EXPLAIN_TEMPLATE_LOADING'] = True
env = app.jinja_env
env.add_extension('jinja2.ext.do')
虽然上述操作不会引发错误,但也不会导致它生成render_template()
理解jinja2.ext.do
扩展名
有什么建议吗?这可能吗?如果是,怎么做 自Flask v.1.1.0以来,您可以使用字典直接访问Flask加载的Jinja扩展。在您的情况下,只添加这一行就可以做到:
app=Flask(\uuuuu name\uuuuuu)
app.jinja_选项['extensions'].append('jinja2.ext.do'))
确保更新您的Flask(使用pip:
pip安装-U Flask
)。自Flask v.1.1.0以来,您可以使用字典直接访问Flask加载的Jinja扩展。在您的情况下,只添加这一行就可以做到:
app=Flask(\uuuuu name\uuuuuu)
app.jinja_选项['extensions'].append('jinja2.ext.do'))
确保更新您的烧瓶(使用pip:
pip安装-U Flask
)。事实上,我发现Zatiranyk列出的选项有时会坏掉(特别是当我尝试使用Flask SocketIO时)
app.jinja_options['extensions'].append('jinja2.ext.do')
我找到的解决方案是使用以下选项:
app.jinja_env.add_extension('jinja2.ext.do')
事实上,我发现Zatiranyk列出的选项有时会失效(特别是当我试图使用Flask SocketIO时)
app.jinja_options['extensions'].append('jinja2.ext.do')
我找到的解决方案是使用以下选项:
app.jinja_env.add_extension('jinja2.ext.do')