web-dev-qa-db-ja.com

jinja 2でセッション変数にアクセスする方法-Flask

セッション変数をflaskからHTMLに手動で渡す必要がありますか、それとも何らかの方法で自動的に送信されますか?

僕にできる

return render_template('index.html')

セッション変数のユーザー名、たとえば{{session['username'}} htmlファイルに?

9
bpb101

Pythonで

session['username'] = 'username'

jinja2で行くことができます

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

@ bpb101は、Jinja2形式では正しいです(他の人が言及したようにスペースは省かれています)。 HTML/Jinja2テンプレートでは、テンプレートに渡すことなく、単にsession辞書を呼び出すことができます。

{{ session['username'] }}

ただし、Pythonコード)の他の例では、変数の割り当てにより、実際にsession['username']の値を文字列'username'で上書きします。使用するsession['username']の値への変数:

username = session['username']

それ以外の場合、他の何らかの理由で値をテストまたは使用する必要がある場合は、たとえば次のように直接アクセスできます。

if session['username'] == some_value:
    return "The username is", session['username']

FlaskまたはJinja2を初めて使用する場合、セッション変数がなぜ上書きされるのか疑問に思うかもしれません。

2
user10257507

セッションを使用してHTMLの特定の部分を分離する場合、これらの要素でセッションを直接呼び出すことができます。

{% if session['username'] %}
<li>Logout</li>
{% endif %}
1
chikwapuro