Skip to content

telspeech/Django_API

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Реализуем API отзывов к товару

Задание

Необходимо реализовать небольшую часть API магазина, а именно товары и отзывы на них. Всего нужно реализовать 2 эндпоинта:

  • /products/ - список всех товаров,
  • /products/<id_товара>/ - детальная информация о конкретном товаре.

Реализация

БД

Создайте базу данных, подключите её к проекту и примените миграции для создания таблиц.

Модели

В модуле models.py приложения уже есть модель Client (данные покупателя).

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

В административной панели уже зарегистрированы необходимые модели.

Сериализация

В модуле serializers.py уже есть заготовка 3 сериализаторов:

  1. ReviewSerializer

Для сериализации отзывов, наследуйте от ModelSerializer и укажите в нём все поля.

  1. ProductListSerializer

Для сериализации списка товаров, наследуйтесь от Serializer и укажите поля title и price.

  1. ProductDetailsSerializer

Лля сериализации деталей товара, наследуйтесь от ModelSerializer и укажите поля title, description, price и reviews(список отзывов, необходимо применить вложенную сериализацию.

Запросы

Необходимо реализовать контроллеры 2 страниц:

  1. список товаров (FBV),

используя функцию с декоратором @api_view, для сериализации используйте класс ProductListSerializer.

  1. детали товара (CBV) ,

используя класс APIView, для сериализации используйте класс ProductDetailsSerializer.

Ожидаемый результат

Список товаров

В результате запроса должен возвращаться объект следующего вида:

[
  {
    "title": "Samsung Galaxy S23",
    "price": 70000.00
  },
  {
    "title": "Apple IPhone 15",
    "price": 100000.00
  }
]

Детали товара

{
  "title": "Xiaomi Mi12",
  "description": "Отличный телефон, топ за свои деньги",
  "price": 45000,
  "reviews": [
    {
      "text":  "Совершенно не понравился телефон, могло быть и лучше",
      "mark": 2
    },
    {
      "text": "Как по мне, очень достойный телефон. Всё работает как надо",
      "mark": 4
    }
  ]
}

Дополнительное задание (* необязательное)

В модуле views есть заготовка view ProductFilteredReviews. Реализуйте в ней получение отзывов к товару с определённой оценкой.

Метод get получает параметр product_id(id товара). По нему вы можете получить из БД отзывы к определённому товару.

Оценку можно получить из необязательного параметра запроса mark. Если параметр передаётся при запросе, по этому значению отфильтруйте записи с нужной оценкой. Если параметр не передаётся, верните все отзывы.


Документация по проекту

Для запуска проекта необходимо:

  1. установить зависимости:
pip install -r requirements.txt
  1. выполнить следующие команды:
  • команда для применения миграций для базы данных:
python manage.py migrate
  • команда для запуска приложения:
python manage.py runserver
  • при создании моделей или их изменении необходимо выполнить следующие команды:
python manage.py makemigrations
python manage.py migrate

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages