Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在Flask 1.0.4中启用/配置Jinja行语句?_Python_Python 3.x_Flask_Jinja2 - Fatal编程技术网

Python 如何在Flask 1.0.4中启用/配置Jinja行语句?

Python 如何在Flask 1.0.4中启用/配置Jinja行语句?,python,python-3.x,flask,jinja2,Python,Python 3.x,Flask,Jinja2,关于行语句,声明如下: 如果应用程序启用了行语句,则可以将行标记为语句 在视频中,行语句的启用/配置如下: from flask import Flask app = Flask(__name__) app.jinja_env.line_statement_prefix = '%' 但是,在Flask 1.0.4中,我的应用程序对象没有此属性 如何启用和配置行语句?因此,根据源代码,app.jinja_env是一个locked_cached_属性,在首次访问时创建。所以我们不能直接在app.

关于行语句,声明如下:

如果应用程序启用了行语句,则可以将行标记为语句

在视频中,行语句的启用/配置如下:

from flask import Flask

app = Flask(__name__)
app.jinja_env.line_statement_prefix = '%'
但是,在Flask 1.0.4中,我的应用程序对象没有此属性


如何启用和配置行语句?

因此,根据源代码,
app.jinja_env
是一个
locked_cached_属性,在首次访问时创建。所以我们不能直接在app.jinja_env上设置选项

我们可以做的是在创建应用程序时设置
app.jinja_选项
,这样当jinja加载环境时,它会查看烧瓶中已经存在的默认
app.jinja_选项

jinja_options = {"extensions": ["jinja2.ext.autoescape", "jinja2.ext.with_"]}
因此,我相信下面这些应该是我们所需要的

from flask import Flask

Flask.jinja_options = {'extensions': ['jinja2.ext.autoescape', 'jinja2.ext.with_'], 'line_statement_prefix': '%'}
app = Flask(__name__)

Flask分解options对象,将其传递给Environment,Environment是Jinja Environment的一个子类,然后分配line_statement_前缀。

我认为您需要更新Jinja2在创建
app
后更新
Jinja_选项,这在版本1.0.4中是不可能的,因为它是一个不可变的dict。但是,在实例化之前在
Flask
类中设置它们可以很好地工作<代码>Flask.jinja_选项={'extensions':['jinja2.ext.autoescape','jinja2.ext.with_'],'line_statement_prefix':'%}
首先,然后:
app=Flask(\uu name_u)
。谢谢你的提示。请编辑您的答案,以便我将其标记为解决方案others@zwithouta我已经更新了我的帖子,以反映您建议的更改