В этом уроке мы добавим в приложение личный кабинет, отображающий всех зарегистрированных пользователей. В предыдущем уроке были созданы страницы регистрации и авторизации. Теперь, аналогичным образом, добавим страницу личного кабинета.
Создание страницы личного кабинета
Скопируем существующую страницу (например, panel) и вставим её ниже. Изменим имя на panel_cabinet. Пока оставим только текст «Личный кабинет», удалив все дополнительные поля и кнопки.
Добавление вкладки в навигацию и отображение списка пользователей
Добавим вкладку «Кабинет» в навигационную панель, но только после успешной авторизации пользователя. Для этого используем функцию is_user_authenticated(). При успешной авторизации, добавим новую вкладку с помощью метода append(). Вкладка будет содержать иконку (например, книжку), текст «Кабинет», и изменённую иконку (selected_icon) при выборе. Также создадим flet.ListView для отображения списка пользователей.
if is_user_authenticated():
if len(page.navigation_bar.destinations) == 2: # Добавляем только если есть регистрация и авторизация
page.navigation_bar.destinations.append(
flet.NavigationDestination(
icon=flet.icons.BOOK,
selected_icon=flet.icons.BOOKMARK,
label="Кабинет",
)
)
users_list = flet.ListView(
expand=True,
spacing=10,
padding=20,
controls=[] # Инициализируем пустым списком
)
Загрузка данных из базы данных
Заменим временный заполнитель списка на данные из базы данных. Подключимся к базе данных, создадим курсор и выполним запрос SELECT * FROM users. Используем функцию fetch_all() для получения всех пользователей. После получения данных, переберём записи и выведем имя пользователя (user[1]).
db = sqlite3.connect('users.db')
cursor = db.cursor()
cursor.execute('SELECT * FROM users')
res = cursor.fetchall()
if res:
for element in res:
users_list.controls.append(
flet.Row(
controls=[
flet.Text(element[1]), # Вывод имени пользователя
flet.Icon(flet.icons.PERSON),
]
)
)
db.close()
После внесения изменений, при переходе в личный кабинет, список пользователей будет подгружаться из базы данных, и добавление новых пользователей будет отражаться в списке.
В результате мы реализовали функциональный личный кабинет, отображающий список пользователей из базы данных. Список обновляется при каждом переходе на страницу личного кабинета.