Необходимо реализовать небольшую часть API магазина, а именно товары и отзывы на них. Всего нужно реализовать 2 эндпоинта:
- /products/- список всех товаров,
- /products/<id_товара>/- детальная информация о конкретном товаре.
Создайте базу данных, подключите её к проекту и примените миграции для создания таблиц.
В модуле models.py приложения уже есть модель Client (данные покупателя).
В административной панели уже зарегистрированы необходимые модели.
В модуле serializers.py уже есть заготовка 3 сериализаторов:
- ReviewSerializer
Для сериализации отзывов, наследуйте от ModelSerializer и укажите в нём все поля.
- ProductListSerializer
Для сериализации списка товаров, наследуйтесь от Serializer и укажите поля title и price.
- ProductDetailsSerializer
Лля сериализации деталей товара, наследуйтесь от ModelSerializer и укажите поля title,
description, price и reviews(список отзывов, необходимо применить вложенную сериализацию.
Необходимо реализовать контроллеры 2 страниц:
- список товаров (FBV),
используя функцию с декоратором @api_view, для сериализации используйте класс ProductListSerializer.
- детали товара (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. Если параметр передаётся при запросе, по этому значению отфильтруйте записи с нужной оценкой. Если параметр не передаётся, верните все отзывы.
Для запуска проекта необходимо:
- установить зависимости:
pip install -r requirements.txt
- выполнить следующие команды:
- команда для применения миграций для базы данных:
python manage.py migrate
- команда для запуска приложения:
python manage.py runserver
- при создании моделей или их изменении необходимо выполнить следующие команды:
python manage.py makemigrations
python manage.py migrate