Wie funktioniert die 'with'-Anweisung in Flask (Jinja2)?

n Python können Sie daswith Anweisung wie folgt Quell):

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

In Flask / Jinja2 ist das Standardverfahren für die Verwendung von Flash-Nachrichten das folgende Quell):

{% with messages = get_flashed_messages() %}
  {% if messages %}
    {% for message in messages %}
      <!-- do stuff with `message` -->
    {% endfor %}        
  {% endif %}
{% endwith %}

Ich würde gerne wissen wie{% with messages = get_flashed_messages() %} funktioniert syntaktisch.

Ich konnte es nicht in reinem Python neu erstellen:

with messages = get_flashed_messages(): pass wirftSyntaxErrorwith get_flashed_messages() as messages: pass wirftAttributeError: __exit__

(Ich habe @ importierget_flashed_messages vonflask in beiden Fällen)

Antworten auf die Frage(4)

Ihre Antwort auf die Frage