README.md

Интернет-магазин (учебный проект)

О проекте

Этот проект содержит только бэкенд интернет-магазина на Django (модели, API, фикстуры, сериализаторы, админка). Фронтенд (Vue.js) не включён в репозиторий, так как был предоставлен как готовый артефакт и не является моей разработкой.

Ниже вы можете ознакомиться с картинками, как сайт выглядит вместе с фронтендом.

Запуск для локального просмотра api (без фронтенда)

Требования

  • Python 3.12
  • Установленные зависимости из requirements.txt

Шаги

  1. Клонируйте репозиторий (если ещё не сделали):
    git clone <url-репозитория>      
    
  2. Перейдите в папку с проектом:
    cd online-store/
    
  3. Создайте и активируйте виртуальное окружение:
    python -m venv venv
    source venv/bin/activate      # Linux/Mac
    # или .\venv\Scripts\activate  # Windows
    
  4. Установите зависимости:
    pip install -r requirements.txt
    
  5. Перейдите в папку с приложением (где находится manage.py):
    cd server/megano
    
  6. Примените миграции:
    python manage.py migrate
    
  7. Загрузите фикстуры (тестовые данные):
    python manage.py load_all_fixtures
    
  8. Запустите сервер:
    python manage.py runserver
    
    
    
    

## Доступные эндпоинты API

API базовый URL: http://127.0.0.1:8000/api/

Админка: http://127.0.0.1:8000/admin/ (требуется суперпользователь)

Примечание по тестированию API:

  • API не имеет корневого эндпоинта (/api/ возвращает 404). Все запросы нужно направлять на конкретные пути, например /api/catalog/.
  • Все эндпоинты (GET, POST, PUT, PATCH, DELETE) можно тестировать прямо в браузере благодаря встроенному интерфейсу Django REST Framework.
  • Для автоматизации или специфических сценариев удобно использовать Postman или curl.

Создание суперпользователя для админки

python manage.py createsuperuser

Аутентификация (auth)

| Метод | Эндпоинт | Описание | Требует авторизации | |-------|----------|----------|---------------------| | POST | /sign-in | Вход (логин). Тело: {"username": "...", "password": "..."} | Нет | | POST | /sign-up | Регистрация. Тело: {"name": "...", "username": "...", "password": "..."} | Нет | | POST | /sign-out | Выход (logout) | Да |

Каталог (catalog)

| Метод | Эндпоинт | Описание | Требует авторизации | |-------|----------|----------|---------------------| | GET | /categories/ | Список корневых категорий с вложенными подкатегориями | Нет | | GET | /catalog/ | Список товаров с фильтрацией и пагинацией. Параметры: filter[name], filter[minPrice], filter[maxPrice], filter[freeDelivery], filter[available], category, sort (rating/price/reviews/date), sortType (dec/inc), tags[] | Нет | | GET | /products/popular | Топ-8 популярных товаров | Нет | | GET | /products/limited | Товары с ограниченным тиражом (до 16) | Нет | | GET | /sales | Список товаров со скидкой (актуальные на сегодня) | Нет | | GET | /banners/ | Список товаров для баннера (4 товара) | Нет |

Корзина (basket)

| Метод | Эндпоинт | Описание | Требует авторизации | |-------|----------|----------|---------------------| | GET | /basket | Получить текущую корзину | Нет (но привязана к сессии) | | POST | /basket | Добавить товар в корзину. Тело: {"id": <product_id>, "count": <number>} | Нет | | DELETE| /basket | Удалить товар из корзины или уменьшить количество. Тело: {"id": <product_id>, "count": <number>} | Нет |

Заказы (order)

| Метод | Эндпоинт | Описание | Требует авторизации | |-------|----------|----------|---------------------| | GET | /orders | Список заказов текущего пользователя | Да | | POST | /orders | Создать заказ из корзины (тело: массив товаров с id и count) | Нет (но привязано к сессии/пользователю) | | GET | /order/<int:pk> | Детальная информация о заказе | Да | | POST | /order/<int:pk> | Подтвердить заказ (указать данные доставки и оплаты). Тело: full_name, email, phone, delivery_type, payment_type, city, address, total_cost, status | Да |

Оплата (payment)

| Метод | Эндпоинт | Описание | Требует авторизации | |-------|----------|----------|---------------------| | POST | /payment/<int:pk> | Оплатить заказ (меняет статус на paid) | Да |

Профиль (profile)

| Метод | Эндпоинт | Описание | Требует авторизации | |-------|----------|----------|---------------------| | GET | /profile | Получить профиль пользователя (имя, email, телефон, аватар) | Да | | POST | /profile | Обновить профиль. Тело: fullName, email, phone | Да | | POST | /profile/password | Сменить пароль. Тело: currentPassword, newPassword | Да | | POST | /profile/avatar | Загрузить аватар (multipart/form-data, поле avatar) | Да |

Теги (tags)

| Метод | Эндпоинт | Описание | Требует авторизации | |-------|----------|----------|---------------------| | GET | /tags/ | Список всех тегов | Нет |

Товары (product)

| Метод | Эндпоинт | Описание | Требует авторизации | |-------|----------|----------|---------------------| | GET | /product/<int:pk>/ | Детальная информация о товаре (включая отзывы, изображения, характеристики) | Нет | | POST | /product/<int:pk>/reviews | Добавить отзыв к товару. Тело: text, rate (1-5) | Да |

Скриншоты

Пользовательская часть

Основные страницы

| Каталог товаров | Пагинация | |----------------|-----------| | Каталог | Пагинация |

| Детальная информация о товаре | Корзина | |------------------------------|---------| | Детальная информация | Корзина |

Оформление заказа (несколько шагов)

| Данные пользователя | Способ доставки | |---------------------|----------------| | Данные пользователя | Доставка |

| Способ оплаты | Подтверждение заказа | |---------------|----------------------| | Способ оплаты | Подтверждение |

Заказы и оплата

| Список заказов | Оплата заказа | |----------------|---------------| | Список заказов | Оплата |

Личный кабинет и отзывы

| Профиль пользователя | Отзывы к товару | |----------------------|-----------------| | Профиль | Отзывы |

Аутентификация

| Вход | Регистрация | |------|-------------| | Логин | Регистрация |

Административная панель Django

| Главная страница админки | Список товаров | |--------------------------|----------------| | Главная админки | Список товаров |

| Редактирование товара (часть 1) | Редактирование товара (часть 2) | |--------------------------------|--------------------------------| | Редактирование товара 1 | Редактирование товара 2 |

| Управление изображениями товаров | |----------------------------------| | Изображения |

Описание
Конвейеры
0 успешных
0 с ошибкой
Разработчики