SQL, Flask: не удается получить доступ к базе данных из HTML-шаблона

Я знаю, что сеансы доступны через 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>

но это тоже не сработало по какой-то причине. Что происходит?

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
80
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Первое решение, которое я пробовал, не работает, потому что у 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'])

Я мог бы также просто пройти весь дикт, как и раньше, я верю.

Другие вопросы по теме