Это тестовое задание представляет собой проект магазина продуктов с использованием фреймворка Django и Django REST Framework (DRF). Проект включает в себя функционал создания, редактирования, удаления категорий и подкатегорий товаров в админке, а также CRUD операции для продуктов и корзины.
- Склонируйте репозиторий на своем компьютере:
git clone https://github.com/Pisarev82/online_store.git
- Перейдите в папку проекта:
cd src
- Установите зависимости:
pip install -r requirements.txt
Либо
pipenv sync
- Перейдите в корневую папку проекта:
cd src
- Запустите сервер разработки Django:
python manage.py runserver
- Сервер будет доступен по адресу
http://localhost:8000/
.
Админка проекта предоставляет интерфейс для управления категориями и подкатегориями товаров. Вы можете создавать, редактировать и удалять категории и подкатегории, устанавливая для них наименование, slug-имя и изображение.
API-эндпоинт /categories/
предоставляет возможность просмотра всех категорий с их подкатегориями. Результаты поддерживают пагинацию.
Админка проекта также позволяет добавлять, изменять и удалять продукты. Каждый продукт должен относиться к определенной подкатегории и категории, и иметь наименование, slug-имя, изображение в трех размерах и цену.
API-эндпоинт /products/
предоставляет возможность просмотра продуктов с пагинацией. Каждый продукт в выводе содержит следующие поля: наименование, slug, категория, подкатегория, цена и список изображений.
API-эндпоинты позволяют добавлять, изменять (количество) и удалять продукты в корзине. Также реализован эндпоинт для вывода состава корзины с подсчетом количества товаров и суммы стоимости товаров в корзине. Существует возможность полной очистки корзины.
Авторизация осуществляется по токену. Авторизированный пользователь может выполнять операции связанные с корзиной только со своей корзиной.
Проект реализован с использованием следующих технологий:
- Django - популярный фреймворк для разработки веб-приложений на языке Python.
- Django REST Framework (DRF) - расширение Django для создания RESTful API.
- Swagger - помогает тестировать функционал, и наглядно показывает доступные методы
- SIMPLE_JWT - библиотека аутентификиции с использованием JWT токена
URL:
GET /categories/?limit=10&offset=1
Ответ:
{
"count": 12,
"next": "http://127.0.0.1:8000/categories/?limit=10&offset=11",
"previous": "http://127.0.0.1:8000/categories/?limit=10",
"results": [
{
"id": 2,
"title": "Вода",
"parent": null,
"slug": "voda",
"image": null
},
{
"id": 4,
"title": "Газированная",
"parent": 2,
"slug": "gazirovannaia",
"image": null
},
{
"id": 5,
"title": "Не газированная",
"parent": 2,
"slug": "ne-gazirovannaia",
"image": null
},
{
"id": 6,
"title": "Сладкая",
"parent": 2,
"slug": "sladkaia",
"image": null
},
{
"id": 3,
"title": "Еда",
"parent": null,
"slug": "eda",
"image": null
},
{
"id": 9,
"title": "Вкусная",
"parent": 3,
"slug": "vkusnaia",
"image": null
},
{
"id": 7,
"title": "Готовая",
"parent": 3,
"slug": "gotovaia",
"image": null
},
{
"id": 10,
"title": "Клевая",
"parent": 3,
"slug": "klevaia",
"image": null
},
{
"id": 8,
"title": "Полезная",
"parent": 3,
"slug": "poleznaia",
"image": null
},
{
"id": 11,
"title": "Сладости",
"parent": null,
"slug": "sladosti",
"image": null
}
]
}
URL:
POST /cart-item/
Заголовок запроса
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNjk4NDUwMzE3LCJpYXQiOjE2OTgzN
Тело запроса:
{
"cart": 2,
"product": 5,
"quantity": 5
}
Ответ:
{
"cart": 2,
"product": 5,
"product_name": "Мясо",
"quantity": 5
}