first commit
This commit is contained in:
@@ -0,0 +1,162 @@
|
||||
# Анастасия Панкратенкова
|
||||
|
||||
> Персональный сайт преподавателя математики и физики с записью на консультацию по подготовке к ОГЭ и ЕГЭ.
|
||||
|
||||

|
||||

|
||||

|
||||

|
||||
|
||||
## О проекте
|
||||
|
||||
Сайт-визитка для Анастасии Викторовны Панкратенковой — преподавателя математики и физики.
|
||||
|
||||
На сайте можно:
|
||||
|
||||
- познакомиться с преподавателем, образованием и опытом;
|
||||
- узнать о подготовке по математике и физике;
|
||||
- понять, как проходят занятия;
|
||||
- оставить заявку на консультацию;
|
||||
- выбрать предмет, экзамен и формат занятий.
|
||||
|
||||
Заявки сохраняются в локальную базу данных 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.
|
||||
Reference in New Issue
Block a user