SoloPizza - это полнофункциональный интернет-магазин пиццы, построенный на Django, с возможностью онлайн-заказа, управлением корзиной, отзывами и личным кабинетом.
- Backend: Django 5.1.7
- Аутентификация: django-allauth (включая вход через Google)
- Асинхронные задачи: Celery 5.3.6 с Redis
- Планировщик задач: django-celery-beat
- Мониторинг задач: Flower
- База данных: SQLite (разработка), PostgreSQL (продакшн)
- Деплой: Gunicorn
Проект организован в виде Django-приложения с несколькими под-приложениями, каждое из которых отвечает за определенный функционал.
SoloPizza/- Основной конфигурационный каталог проекта.settings.py- Общие настройки проекта, база данных, статические файлы, установленные приложения.urls.py- Главный файл маршрутизации URL-адресов проекта.wsgi.py,asgi.py- Точки входа для WSGI/ASGI серверов.sitemap.py- Конфигурация карты сайта.
app_cart/- Приложение для управления корзиной покупок.models.py- Модели для элементов корзины.views.py- Логика добавления, удаления и отображения товаров в корзине.urls.py- Маршруты для корзины.
app_catalog/- Приложение для управления каталогом товаров (пицц, напитков и т.д.).models.py- Модели для категорий и товаров.views.py- Логика отображения каталога, деталей товара, фильтрации.tasks.py- Задачи Celery, связанные с каталогом (например, управление акциями).urls.py- Маршруты для каталога.
app_home/- Приложение для статических страниц, главной страницы и общих функций.views.py- Логика главной страницы, контактов, вакансий, обратной связи.urls.py- Маршруты для домашних страниц.
app_order/- Приложение для оформления и управления заказами.models.py- Модели для заказов и элементов заказа.views.py- Логика оформления заказа, просмотра истории заказов.tasks.py- Задачи Celery, связанные с заказами (например, очистка старых заказов).urls.py- Маршруты для заказов.
app_reviews/- Приложение для управления отзывами пользователей.models.py- Модели для отзывов.views.py- Логика добавления, отображения и модерации отзывов.urls.py- Маршруты для отзывов.
app_user/- Приложение для управления пользователями и аутентификацией.models.py- Модели для профилей пользователей.views.py- Логика регистрации, входа, личного кабинета.urls.py- Маршруты для аутентификации и управления пользователями.
static/- Статические файлы (CSS, JavaScript, изображения).templates/- Шаблоны HTML для всех приложений.requirements.txt- Список зависимостей проекта.manage.py- Утилита командной строки Django для управления проектом.celery_app.py- Основной файл для запуска Celery..gitignore- Файл для игнорирования файлов системой контроля версий Git..pylintrc- Конфигурация линтера Pylint.
# Клонирование репозитория
git clone https://github.com/username/SoloPizza.git
cd SoloPizza
# Создание и активация виртуального окружения
python -m venv venv
source venv/bin/activate # Linux/Mac
# или
venv\Scripts\activate # Windows
# Установка зависимостей
pip install -r requirements.txt
# Запуск проекта
python manage.py migrate
python manage.py runserver# Запуск с помощью Gunicorn
gunicorn SoloPizza.wsgi:application --bind 0.0.0.0:8000 --workers 3Проект использует Celery для выполнения фоновых задач, таких как обработка заказов, уведомления и периодические операции.
Для запуска Celery worker и Celery Beat (планировщика задач) используйте следующие команды:
# Запуск Celery worker
celery -A SoloPizza worker -l info
# Запуск Celery Beat (в отдельном терминале)
celery -A SoloPizza beat -l info --scheduler django_celery_beat.schedulers:DatabaseScheduler- app_order.tasks.clear_orders: Ежедневная очистка всех заказов и сброс счетчика ID.
- app_catalog.tasks.activate_combo_category: Активирует категорию "Комбо" в рабочие дни.
- app_catalog.tasks.deactivate_combo_category: Деактивирует категорию "Комбо" по расписанию.
- app_catalog.tasks.disable_weekly_special_for_all_products: Отключает акцию "Пицца недели" для всех товаров.
Для очистки кэша Redis и перезапуска веб-сервера:
# Очистка кэша Redis
redis-cli flushall
# Перезапуск Gunicorn (если используется systemd)
sudo systemctl restart gunicorn
# Или перезапуск вручную
pkill -f gunicorn
gunicorn SoloPizza.wsgi:application --bind 0.0.0.0:8000 --workers 3