'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:

中重新创建它

(在这两种情况下,我都从 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