it-swarm.com.de

Zugriff auf Sitzungsvariablen in jinja 2 - Flask

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?

7
bpb101

In Python 

session['username'] = 'username'

in jinja2 kannst du gehen 

{{session['username']}}
11
bpb101

@ 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.

2
user10257507

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 %}
1
chikwapuro