Files
teacher_site/README.md
T
2026-08-02 23:02:01 +04:00

9.1 KiB
Raw Blame History

Игорь Олегович Безрукавов

ИО · physics & math

Персональный сайт преподавателя физики и математики

Подготовка к ОГЭ и ЕГЭ, индивидуальные консультации и удобная онлайн-запись.

Python Django SQLite Status


О проекте

Сайт Игоря Олеговича Безрукавова — преподавателя физики и математики, выпускника АГУ с опытом преподавания и репетиторства более 10 лет.

Главная задача проекта — превратить первый интерес ученика в понятный путь к консультации: показать подход преподавателя, помочь выбрать свободное время и сохранить заявку в рабочем кабинете.

Возможности

Для ученика Для преподавателя
Адаптивный лендинг с личной подачей Дашборд с ключевыми показателями
Раздельные направления: физика и математика Управление свободными окнами
ОГЭ, ЕГЭ и школьная программа Статусы заявок от «Новая» до «Проведена»
Выбор класса, формата и свободного времени Быстрые массовые действия
Защита от двойной записи на один слот Ссылка на онлайн-встречу и заметки
Политика конфиденциальности и согласие Фильтры, поиск и история изменений

Как работает запись

Преподаватель открывает время в админке
                    ↓
Свободный слот появляется на сайте
                    ↓
Ученик заполняет форму и выбирает слот
                    ↓
Заявка появляется в кабинете преподавателя
                    ↓
Подтверждение → консультация → статус «Проведена»

Технологии

  • Backend: Django 5, Python
  • Database: SQLite для разработки
  • Frontend: Django Templates, HTML, CSS
  • Admin: кастомизированная Django Admin с дашбордом
  • Static: локальные CSS и изображения
  • Timezone: Europe/Astrakhan

Быстрый запуск

1. Установка зависимостей

В терминале PyCharm, находясь в корне проекта:

.\.venv\Scripts\python.exe -m pip install -r requirements.txt

2. Подготовка базы

.\.venv\Scripts\python.exe manage.py migrate
.\.venv\Scripts\python.exe manage.py createsuperuser

Команда createsuperuser попросит придумать логин и пароль для кабинета преподавателя.

3. Запуск

.\.venv\Scripts\python.exe manage.py runserver

После запуска:

Адрес Назначение
http://127.0.0.1:8000/ Публичный сайт
http://127.0.0.1:8000/admin/ Кабинет преподавателя
http://127.0.0.1:8000/privacy/ Политика конфиденциальности

Ежедневная работа преподавателя

  1. Откройте раздел «Расписание» в админ-панели.
  2. Добавьте свободное окно: дату, время, длительность, предмет и формат.
  3. Убедитесь, что у слота включён флаг «Открыт для записи».
  4. Новая заявка появится в разделе «Записи на консультации».
  5. Проверьте контакты, подтвердите заявку и при необходимости добавьте ссылку на встречу.
  6. После занятия переведите заявку в статус «Проведена».

Отменённый слот снова становится доступным для записи. Копировать регулярное расписание можно массовым действием «Создать копии на следующую неделю».

Важно: сайт показывает только заранее созданные свободные окна. Если в расписании нет слотов, на главной странице будет отображаться 0 свободных мест.

Статусы заявок

Статус Когда использовать
Новая Заявка пришла с сайта и ещё не обработана
Подтверждена Время согласовано с учеником
Проведена Консультация состоялась
Отменена Занятие отменено, слот можно использовать снова
Не пришёл Ученик не подключился или не пришёл

Структура проекта

teacher_site/
├── config/                       # настройки и маршруты Django
├── consultations/                # основное приложение
│   ├── migrations/               # миграции базы данных
│   ├── templates/
│   │   ├── admin/                # дашборд и тема админ-панели
│   │   └── consultations/        # публичные страницы
│   ├── admin.py                  # расписание, заявки и действия
│   ├── forms.py                  # форма записи и валидация
│   ├── models.py                 # слоты и записи
│   └── views.py                  # публичные страницы
├── static/
│   ├── admin/css/                # оформление кабинета
│   ├── css/                      # оформление сайта
│   └── images/                   # фотография преподавателя
├── manage.py
├── requirements.txt
└── README.md

Проверка проекта

.\.venv\Scripts\python.exe manage.py check
.\.venv\Scripts\python.exe manage.py makemigrations --check --dry-run

Обе команды должны завершиться без ошибок и сообщений о новых миграциях.

Перед публикацией

В config/settings.py обязательно:

  • заменить SECRET_KEY на секретное значение;
  • установить DEBUG = False;
  • указать домен в ALLOWED_HOSTS;
  • настроить STATIC_ROOT и выполнить collectstatic;
  • заменить SQLite на PostgreSQL, если проектом будут пользоваться постоянно;
  • настроить резервное копирование базы и защиту админ-панели.

Для автоматических уведомлений в Telegram или по email понадобятся отдельные токены и данные для подключения. Сейчас заявки надёжно сохраняются в админ-панели, а поле напоминания позволяет отмечать обработку вручную.

Идеи для следующего этапа

  • Telegram-уведомление о новой заявке;
  • автоматическое подтверждение и напоминание о занятии;
  • интеграция с календарём преподавателя;
  • онлайн-оплата консультаций;
  • личный кабинет ученика;
  • публикация отзывов и полезных материалов.

Сделано для спокойной и понятной подготовки к экзаменам.