Dois-je passer les variables de session manuellement du flacon à mon HTML ou sont-elles automatiquement envoyées?
Est-ce que je peux faire
return render_template('index.html')
et accéder à un nom d'utilisateur de variable de session, comme par exemple {{session['username'}}
dans le fichier html?
En python
session['username'] = 'username'
dans jinja2 vous pouvez aller
{{session['username']}}
@ bpb101 est correct sur le format Jinja2 (en laissant toutefois les espaces comme d'autres l'ont mentionné). Dans le modèle HTML/Jinja2, vous pouvez simplement appeler le dictionnaire session
sans le transmettre au modèle:
{{ session['username'] }}
Cependant, l'autre exemple, dans le code Python, écraserait la valeur de session['username']
par la chaîne 'username'
, en raison de l'affectation de variables. Si vous tentiez de définir une variable avec la valeur session['username']
, vous utiliseriez:
username = session['username']
Sinon, si vous avez juste besoin de tester ou d'utiliser la valeur pour une autre raison, vous pouvez y accéder directement, par exemple:
if session['username'] == some_value:
return "The username is", session['username']
J'espère que cela aidera tout nouveau venu dans Flask ou Jinja2 à se demander pourquoi leurs variables de session sont écrasées.
Si vous souhaitez isoler certaines parties de votre session HTML en utilisant la session, vous pouvez appeler la session directement sur ces éléments:
{% if session['username'] %}
<li>Logout</li>
{% endif %}