Данный командный проект был разработан на Django. Главная задача - создание платформы интернет-магазина с полной функциональностью такими как: просмотр и редактирование администратором товаров, заказов, категорий каталогов и тд.; наличие личного кабинета у пользователя; показ товаров с фильтрами, а также их сравнение; оформление заказов.
В проекте используется ruff библиотека.
Подробнее про правила (rules) и настройки (settings) можно прочитать в документации:
Все нужные переменные хранятся в файле .env.example
, который следует скопировать в корень проекта.
Для macOS и Linux:
cp .env.example .env
Для Windows:
copy .env.example .env
- Установить PostgerSQL локально
- Запустить и выполнить следующие команды:
CREATE DATABASE db_name;
CREATE ROLE user with password 'password';
ALTER ROLE "user" WITH LOGIN;
GRANT ALL PRIVILEGES ON DATABASE "db_name" to user;
ALTER USER user CREATEDB;
где db_name
- название базы данных, user
- имя пользователя, password
- пароль пользователя
После создания БД и пользователя, необходимо указать их в файле .env
в виде строки подключения к БД:
DATABASE_URL=postgres://user:password@host:port/db_name
- Установить и запустить Redis локально
- Запустить Celery в отдельном терминале:
celery -A marketplace worker -l INFO
- Запустить Celery Beat в отдельном терминале:
celery -A marketplace beat
Для создания периодической задачи для обновления продукта "Предложение дня" необходимо запустить команду:
./manage.py create_periodic_task_for_daily_product
- _init.py - запуск celery
- celery.py - настройки celery касаемо marketplace
- settings.py - общие настройки проекта
- views.py
- handler_404 - обработчик ошибки 404
- handler_500 - обработчик ошибки 500
- IndexTemplateView - отображение главной страницы
- admin.py
- OrderAdmin - регистрация модели Order в административной панели
- OrderItemInline - детализация сущности в административной панели
- cart.py
- Cart - модель корзины для товаров
- add - добавление товара в корзину
- remove - удаление товара из корзины
- get_total_price - получение полной стоимости корзины
- get_total_discount_price - получение стоимости корзины со скидками на товары
- get_total_original_price - получение стоимости корзины на товары с ценами без скидки
- get_cart_price_with_discount - получение стоимости корзины со скидкой на корзину
- get_difference_original_price_and_discount_price - получение разницы оригинальной скидочной цены на товар
- Cart - модель корзины для товаров
- apps.py
- OrdersConfig - создание приложения orders
- context_proccessors.py
- cart - все значения корзины в запросе
- forms.py
- OrderCreateForm - форма оформления заказа
- models.py
- Order - модель заказов
- OrderItem - модель деталей заказов
- views.py
- cart_add - добавление товаров в корзину
- cart_remove - удаление товара из корзины
- CartTemplateView - модель отображения страницы с корзиной
- OrderCreateView - модель создания заказа
- OrderDetailView - модель детализации заказов
management/commands/create_periodic_task_for_daily_product.py - создание задачи по запуску продукта дня
- admin.py
- ProductAdmin - регистрация модели Product в административной панели
- ProductItemTabularInline - детализация сущности в административной панели
- ReviewTabularInline - детализация отзывов в административной панели
- ProductImageInline - детализация картинок для продуктов в административной панели
- CategoryAdmin - регистрация модели Category в административной панели
- preferred_category - создание предпочитаемых категорий
- Seller - регистрация модели Seller в административной панели
- CartDiscountAdmin - регистрация модели CartDiscount (скидка на корзину) в административной панели
- CategoryDiscountAdmin - регистрация модели CategoryDiscount (скидка на категорию) в административной панели
- ProductDiscountAdmin - регистрация модели ProductDiscount (скидка на продукт) в административной панели
- apps.py
- ProductsConfig - создание приложения products
- context_proccessors.py
- comparison - сравнения товаров в запросе
- forms.py
- ProductFilterForm - форма для фильтрации товаров
- ReviewForm - форма для создания комментария
- models.py
- Category - модель категории
- lowest_price - получение самой низкой цены на товар в категории
- Product - модель продукта
- get_limited_products - получить ограниченные продукты
- get_daily_special - получить ежедневный специальный товар
- get_rating - получить рейтинг товара
- get_total_quantity - получить полное количество товара
- Seller - модель продавца
- ProductItem - модель деталей продукта
- price_with_discount - получение цены со скидкой
- Review - модель отзывов
- ProductImage - модель картинок товаров
- Discount - модель скидок
- ProductDiscount - модель скидки на товар
- CategoryDiscount - модель скидки на категорию
- CartDiscount - модель скидки на корзину
- Category - модель категории
- tasks.py
- product_is_daily_special - изменение продукта на специальное предложение из лимитированных продуктов
- utils.py
- daily_special_timer - таймер для смены продукта со специальным предложением
- _AbsDiscountManager - класс для установки скидки
- _apply_percent_discount - применение скидки в процентах
- _apply_fixed_amount_discount - применение скидки с фиксированным значением
- _apply_fixed_price_discount - применение скидки (фиксированная цена)
- DiscountManager - класс для установки скидки на продукт или категорию
- DiscountCartManager - класс для установки скидки на корзину с продуктами
- Comparison - класс сравнения товаров
- add - добавление товара для сравнения
- remove - удаление товара для сравнения
- get_differing_characteristics - получение различий в характеристиках товаров
- views.py
- ProductListView - отображение списка товаров
- ProductDetailView - отображение деталей товара
- add_to_comparison - добавление товара к сравнению
- remove_from_comparison - удаление товара из сравнения
- ComparisonView - отображение сравнения товаров
- admin.py
- UserAdmin - регистрация модели User в административной панели
- ViewHistoryInline - детализация истории просмотров сущности в административной панели
- apps.py
- UsersConfig - создание приложения users
- forms.py
- MarketplaceSignupForm - форма регистрации на маркетплейсе
- MarketplaceLoginForm - форма логирования на маркетплейсе
- MarketplaceProfileForm - форма профиля пользователя
- MarketplaceResetPasswordForm - форма сброса пароля
- MarketplaceResetPasswordKeyForm - форма восстановления пароля
- models.py
- UserManager - модель пользователя-админа
- User - модель обычного пользователя
- ViewHistory - модель просмотра истории пользователя
- view.py
- EmailVerificationSuccessTemplateView - отображение страницы с email
- MarketplaceSignupView - отображение формы регистрации
- MarketplaceLoginView - отображение формы с логированием
- ResendEmailVerification - отображение с повторной отправкой письма
- MarketplaceProfileView - отображение страницы пользователя
- MarketplacePasswordResetView - отображение страницы со сбросом пароля
- MarketplacePasswordResetDoneView - отображение страницы с воссановленным паролем