Referenzieren von Vorlagenvariablen in Jinja-Ausdrücken
In Flask-Webanwendungen ist es üblich, URLs mithilfe von Vorlagenvariablen in Jinja-Ausdrücken dynamisch zu generieren. Das Referenzieren von Variablen innerhalb von Jinja-Ausdrücken kann jedoch eine Herausforderung darstellen, wie das folgende Szenario zeigt:
Stellen Sie sich eine Route vor, die wie folgt definiert ist:
@app.route('/magic/<filename>') def moremagic(filename): pass
< p>Um einen Link zur Route aus einer Vorlage zu generieren, möchten Sie möglicherweise url_for() verwenden this:
<h1>you uploaded {{ name }}</h1> <a href="{{ url_for('/magic/<filename>') }}">Click to see magic happen</a>
Wenn Sie jedoch den Wert von {{name}} dynamisch in die URL einfügen müssen, führt dieser Ansatz zu einem Jinja2-Syntaxfehler.
Die Lösung für dieses Problem liegt im Verständnis des Verhaltens von Jinja-Ausdrücken. Innerhalb von {{ ... }} wird alles als Python-ähnliche Ausdrücke behandelt. Daher müssen Sie verschachtelte {{ ... }} nicht verwenden, um auf Variablen zu verweisen.
<h1>you uploaded {{ name }}</h1> <a href="{{ url_for('moremagic', filename=name) }}">Click to see magic happen</a>
In diesem korrigierten Code werden die zusätzlichen Klammern um den Jinja-Ausdruck entfernt und die Namensvariable ist als Argument an die Funktion url_for() übergeben.
Beachten Sie, dass url_for() den Endpunktnamen erfordert, der in diesem Fall der Name der Funktion (moremagic) ist. Der URL-Pfad selbst ist nicht erforderlich.
Das obige ist der detaillierte Inhalt vonWie referenziere ich Vorlagenvariablen in Jinja „url_for'-Ausdrücken in Flask richtig?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!