Я знаю, что сеансы доступны через html-шаблоны, например:
<h1>{{session.name}}</h1>
Какое-то время это работало, но когда я захотел добавить больше атрибутов пользователю, например, текст о себе, я не смог сохранить все в сеансе. Электронная почта и пароль, которые я сохраняю в сеансе, потому что они действительно используются. Я могу получить пользователя по электронной почте и получить имя так:
User.query.filter_by(email=session['email']).first().name
Однако, когда я пытаюсь поместить его в html, он говорит, что пользователи не определены.
<li>Name: {{Users.query.filter_by(email=session['email']).first().name}}</li>
Я предполагаю, что некоторые подобные вещи не переносятся, но есть ли простой способ получить все переменные из файла main.py, который я там использовал?
я даже пытался сделать
return redirect(url_for('user', \
usr=Users.query.filter_by(email=session['email']).first().__dict__))
в main.py, а затем делать
<li class = "list-group-item">Name: {{usr['name']}}</li>
но это тоже не сработало по какой-то причине. Что происходит?
Первое решение, которое я пробовал, не работает, потому что у Flask нет ссылки на пользователей. Второй тоже не работает, потому что я передал его через url_for, а не фактическую функцию шаблона рендеринга, поэтому он не знал, что с ним делать.
Мое окончательное решение было бы таким:
usr = Users.query.filter_by(email=session['email']).first().__dict__
return render_template('user.html', name=usr['name'], status=usr['status'],
about=usr['about'])
Я мог бы также просто пройти весь дикт, как и раньше, я верю.