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/`](http://127.0.0.1:8000/api/catalog/).  
    > - Все эндпоинты (GET, POST, PUT, PATCH, DELETE) можно тестировать прямо в браузере благодаря встроенному интерфейсу Django REST Framework.  
    > - Для автоматизации или специфических сценариев удобно использовать [Postman](https://www.postman.com/) или `curl`.
    
    ### Создание суперпользователя для админки
    
    ```bash
    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 с ошибкой
Разработчики