Skip to content

Xumpocmb/SoloPizza

Repository files navigation

SoloPizza

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 для выполнения фоновых задач, таких как обработка заказов, уведомления и периодические операции.

Запуск 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
redis-cli flushall

# Перезапуск Gunicorn (если используется systemd)
sudo systemctl restart gunicorn

# Или перезапуск вручную
pkill -f gunicorn
gunicorn SoloPizza.wsgi:application --bind 0.0.0.0:8000 --workers 3

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published