Что такое трекер расходов?
Сегодня я завершил создание небольшого приложения на Flask — трекера расходов. Это приложение позволяет пользователям регистрироваться, входить в систему, добавлять расходы и фильтровать их по категориям. Также отображается общая сумма всех расходов.
Почему именно трекер расходов?
Мне хотелось создать что-то небольшое, но при этом достаточно реальное, чтобы можно было использовать его ежедневно. Трекер расходов идеально подходит под эти критерии: он решает реальную проблему учета финансов, использует все концепции Flask, которые я изучил ранее, и отличается от других проектов, над которыми я работал раньше.
Структура проекта
Приложение состоит из двух частей:
Аутентификация пользователей
Пользователи могут зарегистрироваться, указав имя пользователя, электронную почту и пароль. Они могут войти в систему, оставаться авторизованными благодаря опции "запомнить меня" или выйти из системы. Неавторизованные пользователи перенаправляются на страницу входа.
Управление расходами
Авторизованные пользователи могут добавить новый расход, указав сумму, категорию, описание и дату. Все расходы отображаются в виде списка, где новые записи находятся сверху. Пользователь может фильтровать список по категориям, а итоговая сумма обновляется автоматически после применения фильтра. Любой расход можно удалить.
Архитектура проекта
Проект организован следующим образом:
- app.py: точка входа в приложение; здесь создается экземпляр Flask, настраивается подключение к базе данных и секретный ключ, инициализируются расширения SQLAlchemy, Flask-Migrate и Flask-Login, регистрируется функция загрузки пользователя и импортируются маршруты.
- models.py: определяет две таблицы базы данных —
UserиExpense, каждая со своим набором полей. - routes.py: содержит функции маршрутов, обрабатывающие запросы HTTP GET и POST.
- templates/: папка с HTML-шаблонами, используемыми для рендеринга страниц.
Таким образом, всего за один день удалось собрать полноценное веб-приложение, которое не только демонстрирует возможности Flask, но и является полезным инструментом.