Лабораторная работа №5 по Django. Веб-приложение для управления тренажерным залом.
FitLife Gym - это полнофункциональный веб-сайт тренажерного зала, разработанный на Django 5.2. Проект включает в себя систему управления клиентами, тренерами, абонементами, тренировками и отзывами.
- Просмотр информации о тренажерном зале
- Список тренеров и их специализаций
- Каталог тренировок с фильтрацией по уровню сложности
- Типы абонементов и цены
- Оборудование зала
- Новости и статьи
- FAQ
- Вакансии
- Отзывы клиентов
- Личный кабинет
- Покупка абонементов с промокодами
- Запись на групповые тренировки
- Выбор персонального тренера
- Добавление отзывов
- История абонементов и тренировок
- Панель управления тренера
- Просмотр своих клиентов
- Управление расписанием тренировок
- Создание промокодов
- Добавление новых тренировок
- Полный доступ к админ-панели Django
- Статистика времени пользователей на сайте (с графиками)
- Диаграмма распределения абонементов
- Управление всеми моделями
- Backend: Django 5.2, Python 3.11
- Frontend: Bootstrap 5, HTML5, CSS3
- База данных: SQLite3
- Визуализация: Matplotlib, Pandas
- Дополнительно: Django Signals для логирования сессий
cd E:\Programming\Python\Projects\Selected-Chapters-Of-Computer-Science-LB2-5\LB5python -m venv .venv
.venv\Scripts\activatepip install django pillow matplotlib pandaspython manage.py migratepython manage.py createsuperuserpython manage.py load_test_datadocker compose up --buildМиграции и старт выполняются в Dockerfile. База — db.sqlite3 (файл сохраняется в volume). Сайт: http://127.0.0.1:8000/
pip install -r requirements.txt
python manage.py migrate
python manage.py runserverСайт будет доступен по адресу: http://127.0.0.1:8000/
Из корня проекта (FitLife), с активированным виртуальным окружением:
pip install -r requirements.txtpython manage.py test gym -v 2Ожидаемый результат: все тесты проходят (OK).
Вариант 1 — краткий отчёт в терминале:
coverage run manage.py test gym
coverage reportВариант 2 — HTML-отчёт (удобно показать в браузере):
coverage run manage.py test gym
coverage htmlОткройте файл htmlcov/index.html в браузере — там процент по каждому файлу и подсветка непокрытых строк.
Вариант 3 — одной командой с проверкой порога 80%:
coverage run manage.py test gym && coverage report --fail-under=80Порог 80% задан в файле .coveragerc (fail_under = 80).
- Скрин или вывод
python manage.py test gym -v 2— все тесты зелёные. - Скрин
coverage report— столбец TOTAL ≥ 80%. - При необходимости — открытый
htmlcov/index.html.
На каждой странице под строкой с датой и часовым поясом есть блок «Календарь месяца (текстовая сетка)» — раскройте его, чтобы увидеть сетку дней месяца в формате DD/MM/YYYY (текущий день в квадратных скобках, например [20]).
- Username: admin
- Password: admin
LB5/
├── gym/ # Основное приложение
│ ├── migrations/ # Миграции базы данных
│ ├── management/ # Кастомные команды
│ │ └── commands/
│ │ └── load_test_data.py
│ ├── templates/ # HTML шаблоны
│ │ └── gym/
│ │ ├── base.html # Базовый шаблон
│ │ ├── main.html # Главная страница
│ │ ├── profile.html # Профиль пользователя
│ │ └── ... # Другие шаблоны
│ ├── admin.py # Настройки админ-панели
│ ├── models.py # Модели данных
│ ├── views.py # Представления
│ ├── forms.py # Формы
│ ├── urls.py # URL маршруты
│ └── signals.py # Сигналы Django
├── LB5/ # Настройки проекта
│ ├── settings.py # Конфигурация Django
│ ├── urls.py # Главные URL
│ └── wsgi.py
├── media/ # Загруженные файлы
├── docker-compose.yml # Web (SQLite)
├── manage.py # Утилита управления Django
└── README.md # Этот файл
- CompanyInfo - информация о компании
- Trainer - тренеры
- Client - клиенты
- MembershipType - типы абонементов
- Membership - купленные абонементы
- TrainingType - типы тренировок
- Training - расписание тренировок
- Equipment - оборудование
- Review - отзывы
- Promocode - промокоды
- FAQ - часто задаваемые вопросы
- Article - новости и статьи
- Vacancy - вакансии
- UserSessionLog - логи сессий пользователей
/- Главная страница/about/- О компании/trainings/- Список тренировок/trainers/- Список тренеров/memberships/- Типы абонементов/equipment/- Оборудование/reviews/- Отзывы/news/- Новости/contacts/- Контакты/register/- Регистрация/login/- Вход/profile/- Профиль пользователя/trainer-dashboard/- Панель тренера/statistics/- Статистика (для staff)/admin/- Админ-панель Django
- Регистрация с валидацией возраста (18+)
- Валидация белорусских номеров телефонов
- Автоматическое создание профиля клиента при регистрации
- Автоматическое отслеживание времени входа/выхода
- Визуализация статистики через Matplotlib
- Расчет среднего времени на сайте
- Скидки на абонементы
- Проверка срока действия
- Привязка к конкретным типам абонементов
- Ограничение количества участников
- Запись на будущие тренировки
- Отмена тренировок
- Оценка от 1 до 5 звезд
- Привязка к тренерам (опционально)
- Хронологическая сортировка
Лабораторная работа №5 - Django сайт тренажерного зала (Вариант 3)
14 мая 2026