163 lines
7.4 KiB
Markdown
163 lines
7.4 KiB
Markdown
# Анастасия Панкратенкова
|
||
|
||
> Персональный сайт преподавателя математики с записью на консультацию по подготовке к ОГЭ и ЕГЭ.
|
||
|
||

|
||

|
||

|
||

|
||
|
||
## О проекте
|
||
|
||
Сайт-визитка для Анастасии Викторовны Панкратенковой — преподавателя математики.
|
||
|
||
На сайте можно:
|
||
|
||
- познакомиться с преподавателем, образованием и опытом;
|
||
- узнать о подготовке по математике;
|
||
- понять, как проходят занятия;
|
||
- оставить заявку на консультацию;
|
||
- выбрать предмет, экзамен и формат занятий.
|
||
|
||
Заявки сохраняются в локальную базу данных SQLite. Подключение уведомлений в Telegram или по электронной почте можно добавить следующим этапом.
|
||
|
||
## Технологии
|
||
|
||
| Технология | Назначение |
|
||
| --- | --- |
|
||
| Python 3.10+ | Основной язык приложения |
|
||
| Flask 3.x | Веб-сервер и маршрутизация |
|
||
| Jinja2 | Рендеринг HTML-шаблонов |
|
||
| SQLite | Хранение заявок на консультацию |
|
||
| HTML5 | Структура страниц |
|
||
| CSS3 | Адаптивный визуальный стиль |
|
||
| JavaScript | Небольшие интерактивные эффекты |
|
||
|
||
## Структура проекта
|
||
|
||
```text
|
||
anastasia_viktorovna/
|
||
├── app.py # Flask-приложение и обработка заявок
|
||
├── requirements.txt # Зависимости проекта
|
||
├── .env.example # Пример переменных окружения
|
||
├── templates/
|
||
│ ├── index.html # Главная страница
|
||
│ ├── success.html # Страница успешной отправки
|
||
│ ├── admin_login.html # Вход в админ-панель
|
||
│ └── admin.html # Список заявок
|
||
├── static/
|
||
│ ├── css/styles.css # Стили и адаптивная вёрстка
|
||
│ ├── js/main.js # Клиентские эффекты
|
||
│ └── images/teacher.jpg # Фотография преподавателя
|
||
└── consultations.db # Создаётся автоматически при запуске
|
||
```
|
||
|
||
## Запуск в PyCharm
|
||
|
||
### 1. Открыть проект
|
||
|
||
Откройте в PyCharm папку проекта:
|
||
|
||
```text
|
||
C:\Users\greyjoy\PycharmProjects\anastasia_viktorovna
|
||
```
|
||
|
||
### 2. Выбрать интерпретатор
|
||
|
||
В PyCharm выберите интерпретатор виртуального окружения:
|
||
|
||
```text
|
||
.venv\Scripts\python.exe
|
||
```
|
||
|
||
Если виртуальное окружение ещё не создано, выполните в терминале PyCharm:
|
||
|
||
```powershell
|
||
py -3.10 -m venv .venv
|
||
.venv\Scripts\Activate.ps1
|
||
```
|
||
|
||
### 3. Установить зависимости
|
||
|
||
```powershell
|
||
python -m pip install -r requirements.txt
|
||
```
|
||
|
||
### 4. Запустить сайт
|
||
|
||
```powershell
|
||
python app.py
|
||
```
|
||
|
||
После запуска откройте в браузере:
|
||
|
||
<http://127.0.0.1:5000>
|
||
|
||
Остановить сервер можно сочетанием `Ctrl+C` в терминале.
|
||
|
||
## Как работает форма
|
||
|
||
1. Посетитель заполняет имя, контакт, предмет, экзамен и формат занятий.
|
||
2. Flask проверяет обязательные поля.
|
||
3. Заявка записывается в таблицу `consultation_requests` файла `consultations.db`.
|
||
4. Пользователь видит страницу успешной отправки.
|
||
|
||
При обновлении существующего проекта недостающие поля базы добавляются автоматически. Старые заявки получают статус «Новая» и значение времени «Гибко».
|
||
|
||
В текущей версии заявки не отправляются автоматически преподавателю. Для рабочего сайта нужно подключить канал уведомлений и указать контактные данные Анастасии Викторовны.
|
||
|
||
## Переменные окружения
|
||
|
||
Для запуска в интернете рекомендуется заменить тестовый секретный ключ Flask:
|
||
|
||
```powershell
|
||
$env:SECRET_KEY = "ваш-длинный-случайный-ключ"
|
||
python app.py
|
||
```
|
||
|
||
Файл `.env.example` содержит пример необходимой переменной.
|
||
|
||
## Админ-панель
|
||
|
||
Панель доступна по адресу:
|
||
|
||
<http://127.0.0.1:5000/admin>
|
||
|
||
По умолчанию для локальной разработки используется пароль `admin123`. Перед публикацией сайта обязательно задайте собственный пароль:
|
||
|
||
```powershell
|
||
$env:ADMIN_PASSWORD = "ваш-приватный-пароль"
|
||
python app.py
|
||
```
|
||
|
||
После входа в панели отображаются:
|
||
|
||
- имя ученика или родителя;
|
||
- контакт для обратной связи;
|
||
- выбранный предмет;
|
||
- экзамен — ОГЭ или ЕГЭ;
|
||
- формат занятий;
|
||
- желаемое время занятий;
|
||
- комментарий из формы;
|
||
- дата и номер заявки.
|
||
|
||
Также в панели доступны:
|
||
|
||
- сводная статистика по всем заявкам;
|
||
- поиск по имени, контакту, комментарию и внутренней заметке;
|
||
- фильтрация по статусу и предмету;
|
||
- четыре статуса: «Новая», «Связались», «Запланирована», «Завершена»;
|
||
- внутренние заметки преподавателя по каждой заявке;
|
||
- удаление заявки с подтверждением;
|
||
- экспорт текущего списка в CSV для Excel или Google Таблиц.
|
||
|
||
Ссылка на админ-панель не показывается посетителям сайта. Доступ защищён сессионной авторизацией Flask.
|
||
|
||
## Дальнейшее развитие
|
||
|
||
- уведомления о новых заявках в Telegram;
|
||
- закрытая страница для просмотра заявок;
|
||
- реальные контакты и расписание;
|
||
- отзывы учеников и результаты подготовки;
|
||
- публикация сайта на хостинге с Python.
|