'with' 语句在 Flask (Jinja2) 中如何工作?
How does the 'with' statement work in Flask (Jinja2)?
在 Python 中,您可以像这样使用 with
语句 (source):
class controlled_execution:
def __enter__(self):
# set things up
return thing
def __exit__(self, type, value, traceback):
# tear things down
with controlled_execution() as thing:
# some code
在Flask/Jinja2中,使用闪信的标准程序如下(source):
{% with messages = get_flashed_messages() %}
{% if messages %}
{% for message in messages %}
<!-- do stuff with `message` -->
{% endfor %}
{% endif %}
{% endwith %}
我想知道 {% with messages = get_flashed_messages() %}
在语法方面是如何工作的。
我无法在纯 Python:
中重新创建它
with messages = get_flashed_messages(): pass
提高 SyntaxError
with get_flashed_messages() as messages: pass
提高 AttributeError: __exit__
(在这两种情况下,我都从 flask
导入了 get_flashed_messages
)。
Flask中的with
语句与Python中的with
语句不同。
在 python 中,等效项是:
messages = get_flashed_messages()
Jinja 中的 {% with %}
语句允许您定义变量,但使用 {% endwith %}
限制变量的范围
声明。例如:
{% with myvar=1 %}
...
{% endwith %}
正文中声明的任何元素都可以访问 myvar 变量。
请参考 - https://www.webforefront.com/django/usebuiltinjinjastatements.html
在 Python 中,您可以像这样使用 with
语句 (source):
class controlled_execution:
def __enter__(self):
# set things up
return thing
def __exit__(self, type, value, traceback):
# tear things down
with controlled_execution() as thing:
# some code
在Flask/Jinja2中,使用闪信的标准程序如下(source):
{% with messages = get_flashed_messages() %}
{% if messages %}
{% for message in messages %}
<!-- do stuff with `message` -->
{% endfor %}
{% endif %}
{% endwith %}
我想知道 {% with messages = get_flashed_messages() %}
在语法方面是如何工作的。
我无法在纯 Python:
中重新创建它with messages = get_flashed_messages(): pass
提高SyntaxError
with get_flashed_messages() as messages: pass
提高AttributeError: __exit__
(在这两种情况下,我都从 flask
导入了 get_flashed_messages
)。
Flask中的with
语句与Python中的with
语句不同。
在 python 中,等效项是:
messages = get_flashed_messages()
{% with %}
语句允许您定义变量,但使用 {% endwith %}
声明。例如:
{% with myvar=1 %}
...
{% endwith %}
正文中声明的任何元素都可以访问 myvar 变量。
请参考 - https://www.webforefront.com/django/usebuiltinjinjastatements.html