Muss ich Sitzungsvariablen manuell von der Flasche an meinen HTML-Code übergeben, oder werden sie automatisch auf irgendeine Weise gesendet?
Kann ich tun
return render_template('index.html')
und auf eine Sitzungsvariable zugreifen, z. B. {{session['username'}}
in der HTML-Datei?
In Python
session['username'] = 'username'
in jinja2 kannst du gehen
{{session['username']}}
@ bpb101 ist im Jinja2-Format korrekt (obwohl die Leerzeichen ausgelassen wurden, wie andere bereits erwähnt haben). In der HTML/Jinja2-Vorlage können Sie einfach das session
-Wörterbuch aufrufen, ohne es an die Vorlage zu übergeben:
{{ session['username'] }}
Das andere Beispiel im Python-Code würde jedoch aufgrund der Variablenzuweisung tatsächlich den Wert von session['username']
mit der Zeichenfolge 'username'
überschreiben. Wenn Sie versuchen, eine Variable auf den Wert von session['username']
zu setzen, würden Sie Folgendes verwenden:
username = session['username']
Andernfalls, wenn Sie den Wert nur aus einem anderen Grund testen oder verwenden müssen, können Sie beispielsweise direkt auf ihn zugreifen:
if session['username'] == some_value:
return "The username is", session['username']
Hoffentlich hilft das für alle, die neu in Flask oder Jinja2 sind, und wundert sich vielleicht, warum ihre Sitzungsvariablen überschrieben werden.
Wenn Sie bestimmte Teile Ihres HTML-Codes mithilfe der Sitzung isolieren möchten, können Sie die Sitzung direkt für diese Elemente aufrufen:
{% if session['username'] %}
<li>Logout</li>
{% endif %}