it-swarm.com.ru

Как получить доступ к переменным сеанса в jinja 2 - Flask

Нужно ли передавать переменные сеансов вручную из фляги в мой HTML или они автоматически каким-то образом отправляются?

Я могу сделать 

return render_template('index.html')

и получить доступ к переменной сеанса username, например, {{session['username'}} в html-файле?

7
bpb101

В питоне 

session['username'] = 'username'

в jinja2 вы можете пойти 

{{session['username']}}
11
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