Содержание
Flower Shop Service - это веб-приложение на Django для сервиса доставки цветов "Цвет 25 весны". Проект предоставляет полный функционал интернет-магазина цветов с возможностью оформления заказов, управления корзиной, просмотра каталога товаров и интеграцией с Telegram ботом для уведомлений и аналитики.
Цели и задачи проекта
Цели:
- Создать полнофункциональный интернет-магазин цветов с системой заказов
- Реализовать удобный пользовательский интерфейс для выбора и оформления заказов
- Интегрировать Telegram бота для уведомлений и аналитики
- Обеспечить эффективное управление заказами и товарами через админ-панель
Ключевые задачи:
- Разработать модели данных для товаров, заказов, пользователей и отзывов
- Создать систему каталога товаров с детальными страницами
- Реализовать корзину покупок и систему оформления заказов
- Внедрить систему аутентификации и личный кабинет пользователя
- Реализовать историю заказов с возможностью повторного заказа
- Добавить систему отзывов и рейтингов для товаров
- Интегрировать Telegram бота для уведомлений о заказах и аналитики
- Создать административную панель для управления заказами и товарами
Результаты
Реализованная функциональность:
- Регистрация и авторизация пользователей с кастомной моделью пользователя
- Каталог товаров с детальными страницами для каждого букета
- Корзина покупок с возможностью добавления и удаления товаров
- Система оформления заказов с выбором даты и времени доставки
- История заказов с возможностью повторного заказа
- Система отзывов и рейтингов для товаров
- Личный кабинет пользователя с редактированием профиля
- Административная панель для управления заказами, товарами и пользователями
- Аналитика по продажам для администратора
- Telegram бот с уведомлениями о новых заказах и смене статуса
- Команда
/analyticsв Telegram боте для получения ежедневной статистики
Созданные компоненты:
- Django приложение
flower_shopс моделями: CustomUser, Product, Order, OrderItem, Review, Report - HTML шаблоны для всех страниц приложения
- Система сигналов для автоматической отправки уведомлений в Telegram
- Кастомные команды управления для создания тестовых пользователей и товаров
- Интеграция с python-telegram-bot для работы Telegram бота
(В начало)
Основные технологии и библиотеки, используемые в проекте:
Дополнительные зависимости:
python-telegram-bot==21.10- для интеграции Telegram ботаpytest==8.3.4иpytest-django==4.10.0- для тестированияpillow==11.1.0- для работы с изображениями товаровpython-dotenv==1.0.0- для управления настройками через переменные окруженияSQLite- база данных (по умолчанию)Bootstrap- для современного адаптивного дизайна интерфейса
(В начало)
Начало работы
Инструкции по установке и запуску проекта локально.
Для работы с проектом необходимо установить:
- Python 3.x
# Проверьте версию Python python --version
Ниже приведены инструкции по установке и настройке приложения.
-
Клонируйте репозиторий
git clone https://github.com/your_username/repo_name.git cd Flower-shop-service -
Создайте виртуальное окружение (рекомендуется)
python -m venv venv # Windows venv\Scripts\activate # Linux/Mac source venv/bin/activate
-
Установите зависимости
pip install -r requirements.txt
-
Создайте файл
.envв корне проекта и добавьте необходимые переменные окружения:SECRET_KEY=your-secret-key-here DEBUG=True ALLOWED_HOSTS=localhost,127.0.0.1 TELEGRAM_BOT_TOKEN=your-telegram-bot-token TELEGRAM_ADMIN_CHAT_ID=your-telegram-chat-id
-
Примените миграции
python manage.py migrate
-
Создайте тестовых пользователей
python manage.py create_test_users
По умолчанию создаются пользователи:
- Админ:
admin/admin123(email:admin@example.com) - Пользователь:
testuser/test123(email:testuser@example.com)
- Админ:
-
(Опционально) Создайте тестовые товары
python manage.py create_test_products
-
Запустите сервер разработки
python manage.py runserver
-
Откройте в браузере:
- Главная страница: http://127.0.0.1:8000/
- Каталог товаров: http://127.0.0.1:8000/catalog/
- Админ-панель: http://127.0.0.1:8000/admin/
(В начало)
Использование
Приложение предоставляет следующие страницы и функциональность:
-
Главная страница (
/)- Приветственная страница с описанием сервиса
- Доступна всем пользователям
-
Каталог товаров (
/catalog/)- Отображает все доступные букеты цветов
- Доступна всем пользователям без авторизации
- Показывает название, цену и изображение каждого товара
-
Детальная страница товара (
/catalog/<product_id>/)- Подробная информация о букете
- Отображение всех отзывов и рейтингов
- Возможность оставить отзыв (требуется авторизация)
- Кнопка добавления товара в корзину
-
Корзина (
/cart/)- Просмотр товаров в корзине
- Изменение количества товаров
- Очистка корзины
- Переход к оформлению заказа
-
Оформление заказа (
/create_order/)- Форма для оформления доставки
- Выбор даты и времени доставки
- Указание адреса доставки
- Добавление комментария к заказу
- Требуется авторизация
-
История заказов (
/order_history/)- Просмотр всех заказов пользователя
- Детальная информация о каждом заказе
- Возможность повторить заказ
- Требуется авторизация
-
Личный кабинет (
/profile/)- Просмотр и редактирование профиля
- Управление личными данными
- Требуется авторизация
-
Регистрация и вход (
/register/,/login/)- Регистрация новых пользователей
- Авторизация существующих пользователей
- Восстановление пароля
-
Аналитика (
/analytics/)- Статистика по продажам
- Отчёты о заказах и выручке
- Доступна только суперпользователям
-
Админ-панель (
/admin/)- Стандартная Django админ-панель
- Управление товарами, заказами, пользователями и отзывами
- Изменение статусов заказов
- Доступна только администраторам
- Уведомления о заказах: автоматическая отправка уведомлений в Telegram при создании нового заказа
- Уведомления о смене статуса: отправка сообщений при изменении статуса заказа
- Команда
/analytics: получение ежедневной статистики по заказам и выручке - Бот запускается автоматически при старте Django приложения
(В начало)
Показать пройденные этапы разработки
-
Этап 1: Базовая структура проекта
- Создание Django проекта
flower_shop - Настройка базовой структуры URL и маршрутизации
- Настройка статических файлов и медиа
- Создание Django проекта
-
Этап 2: Модели данных
- Разработка кастомной модели пользователя
CustomUserс полями phone и address - Создание модели
Productдля товаров (букетов) - Разработка модели
Orderс выбором даты и времени доставки - Создание модели
OrderItemдля связи заказов с товарами - Разработка модели
Reviewс системой рейтингов - Создание модели
Reportдля аналитики продаж - Применение миграций базы данных
- Разработка кастомной модели пользователя
-
Этап 3: Система аутентификации и авторизации
- Реализация регистрации новых пользователей
- Реализация страницы входа и выхода
- Настройка декораторов для защиты страниц, требующих авторизации
- Реализация восстановления пароля
- Настройка редиректов после входа/выхода
-
Этап 4: Каталог товаров
- Реализация представления для отображения списка товаров
- Создание детальной страницы товара с отображением информации
- Создание HTML шаблонов для каталога
- Интеграция работы с изображениями товаров
-
Этап 5: Корзина покупок
- Реализация добавления товаров в корзину (сессия)
- Создание страницы просмотра корзины
- Реализация изменения количества товаров в корзине
- Реализация очистки корзины
-
Этап 6: Система заказов
- Создание формы
OrderFormдля оформления заказа - Реализация представления для обработки заказа
- Создание HTML шаблона формы оформления заказа
- Реализация выбора даты и времени доставки
- Сохранение заказа в базу данных с товарами из корзины
- Создание формы
-
Этап 7: История заказов
- Реализация просмотра истории заказов пользователя
- Отображение детальной информации о каждом заказе
- Реализация функции повторного заказа
-
Этап 8: Система отзывов и рейтингов
- Создание формы
ReviewFormдля добавления отзывов - Реализация возможности оставить отзыв на товар
- Система рейтингов от 1 до 5 звёзд
- Отображение всех отзывов на странице товара
- Создание формы
-
Этап 9: Личный кабинет
- Создание страницы личного кабинета
- Реализация редактирования профиля пользователя
- Создание формы
ProfileEditFormдля изменения данных
-
Этап 10: Административная панель
- Настройка Django админ-панели для всех моделей
- Добавление фильтров и поиска в админ-панели
- Настройка отображения заказов с inline-редактированием товаров
- Реализация изменения статусов заказов
-
Этап 11: Аналитика продаж
- Реализация страницы аналитики для администраторов
- Расчёт общей выручки и количества заказов
- Создание отчётов по продажам
- Отображение статистики в удобном формате
-
Этап 12: Интеграция Telegram бота
- Интеграция библиотеки
python-telegram-bot - Настройка автоматического запуска бота при старте приложения
- Реализация отправки уведомлений о новых заказах
- Реализация уведомлений о смене статуса заказа
- Создание команды
/analyticsдля получения статистики - Настройка отправки фотографий товаров в уведомлениях
- Интеграция библиотеки
-
Этап 13: Система сигналов
- Реализация сигналов для автоматической отправки уведомлений
- Настройка обработки событий создания и обновления заказов
- Интеграция сигналов с Telegram ботом
-
Этап 14: Кастомные команды управления
- Создание команды
create_test_usersдля создания тестовых пользователей - Создание команды
create_test_productsдля создания тестовых товаров - Реализация загрузки изображений для товаров
- Создание команды
-
Этап 15: Улучшение пользовательского интерфейса
- Интеграция Bootstrap для современного дизайна
- Создание адаптивной навигационной панели
- Улучшение форм с CSS-классами Bootstrap
- Отображение статуса пользователя в навигации
- Создание красивого дизайна главной страницы
-
Этап 16: Управление настройками через переменные окружения
- Интеграция библиотеки
python-dotenv - Вынос секретных ключей в переменные окружения
- Настройка
SECRET_KEY,DEBUG,ALLOWED_HOSTSчерез.env - Настройка токенов Telegram бота через переменные окружения
- Интеграция библиотеки
- Добавление пагинации для каталога товаров
- Реализация полнотекстового поиска по товарам
- Добавление фильтрации товаров по категориям и цене
- Реализация системы скидок и промокодов
- Добавление возможности редактирования и удаления отзывов
- Реализация системы избранных товаров
- Добавление уведомлений на email при изменении статуса заказа
- Реализация интеграции с платёжными системами
- Добавление системы уведомлений в личном кабинете
- Реализация API endpoints (REST API) для мобильного приложения
- Добавление системы управления категориями товаров
- Реализация экспорта отчётов в Excel/PDF
- Написание unit-тестов и интеграционных тестов
- Настройка CI/CD pipeline
- Оптимизация производительности и кэширование
- Добавление многоязычности интерфейса
(В начало)
Вклады делают сообщество открытого исходного кода таким удивительным местом для обучения, вдохновения и творчества. Любые ваши вклады будут высоко оценены.
Если у вас есть предложения по улучшению, пожалуйста, создайте fork репозитория и отправьте pull request. Вы также можете просто открыть задачу с тегом «enhancement». Не забудьте поставить проекту звездочку! Еще раз спасибо!
- Создать fork проекта
- Создайте ветку для вашей функции (
git checkout -b feature/AmazingFeature) - Зафиксируйте изменения (
git commit -m 'Add some AmazingFeature') - Отправьте изменения в ветку (
git push origin feature/AmazingFeature) - Создайте Pull Request
(В начало)
Распространяется по лицензии MIT. Дополнительную информацию см. в файле LICENSE.
(В начало)
(В начало)
Выражаю искреннюю благодарность университету Zerocoder и всей его команде за создание вдохновляющей и профессиональной образовательной среды. За подготовку "IT-астронавтов" на "космодроме" Зерокодер.
Особая благодарность:
Кириллу Пшиннику, директору университета, за вдохновение на подвиг;
Преподавателям Нине Стефанцовой, Максиму Вершинину и Дарье Бобровской — за глубокие знания, терпение и готовность всегда помочь;
Никите Муркину, куратору курса, за чёткую организацию и наставничество;
Елизавете, менеджеру, за заботу, оперативность и неизменную доброжелательность.
Благодаря вам этот проект стал возможен!
(В начало)

