Архив за Февраль, 2022

Аутентификация по токену в Django. Задание

Добавьте механизм аутентификации при помощи обычного токена в проект Yatube API, реализованный на view-функциях. Сделайте так, чтобы при создании нового поста через POST-запрос в поле author автоматически записывался объект автора по токену.Вам нужно: Сделать доступ к API только после авторизации; опишите эндпоинт, по которому можно будет получать токен. В сериализаторе настроить поле author в режим «только для чтения». При […]

Сериализаторы, дополнительные настройки. Задание 2

В Yatube API информация о дате создания поста передаётся по ключу pub_date. Добавьте в запросы информативности: сделайте так, чтобы пользователи API получали дату публикации поста в поле с именем publication_date. Подсказка:Используйте параметр source для переопределения названий полей сериализатора. Поле publication_date в сериализаторе должно быть только «для чтения»: при создании поста берётся текущее время, передавать в запросе его не надо. Код […]

Сериализаторы, дополнительные настройки. Задание 1

Владельцы интернет-ресурсов покупают готовые статьи на биржах; стоимость зависит от количества символов в тексте. Настройте Yatube API так, чтобы в ответ на GET-запрос поста (или списка постов) вместе с информацией о посте возвращалось дополнительное поле character_quantity. В этом поле верните количество символов в запрошенных публикациях. Подсказка:Для поля character_quantity установите тип SerializerMethodField. Значение поля character_quantity вычислите в методе get_character_quantity(). Код […]

Сериализаторы для связанных моделей. Задание 2

Добавьте к постам хештеги. Хештеги должны храниться в отдельной таблице в БД и быть связаны с постами отношением «многие-ко-многим». При запросе постов должна возвращаться информация о всех связанных с конкретным постом хештегах, а при добавлении или обновлении поста нужно обеспечить возможность передавать названия хештегов списком прямо в теле запроса. Без указания хештегов пост через API […]

Сериализаторы для связанных моделей. Задание 1

Настройте API для Yatube так, чтобы при запросе постов возвращалась информация о группе, в которой опубликован пост. Данные о группе должны возвращаться в виде значения её поля slug. Добавьте возможность при создании или изменении поста через API опционально указывать группу, передавая в теле запроса поле slug. Подсказка: Чтобы получить значение slug из объекта поста, при переопределении поля group в […]

Вьюсеты и роутеры, задание

Напишите view-класс PostViewSet(), унаследовавшись от ModelViewSet, и создайте роутер для него. Созданный роутер должен генерировать два эндпоинта: api/v1/posts/, api/v1/posts/<int:pk>/. Через эти эндпоинты должны быть доступны любые операции с моделью Post: POST-запрос на api/v1/posts/ создаст новую запись. Запросы PUT, PATCH или DELETE к адресу api/v1/posts/<pk>/ изменят или удалят существующую запись. GET-запрос на те же адреса вернёт список объектов или один объект. Подсказка:При […]

View-классы API в Django. Задание 3

Напишите на основе дженериков два view-класса: APIPostList и APIPostDetail. Опишите два эндпоинта: api/v1/posts/, api/v1/posts/<pk>/. Через эти эндпоинты должны быть доступны любые операции с моделью Post: POST-запрос на api/v1/posts/ создаст новую запись. Запросы PUT, PATCH или DELETE к адресу api/v1/posts/<pk>/ удалят или изменят существующую запись. GET-запрос на те же адреса вернёт список объектов или один объект. Подсказка:Для каждого класса пропишите queryset и serializer_class. Код views.py: […]

View-классы API в Django. Задание 2

Опишите код класса APIPostDetail(), наследующегося от APIView. Этот класс должен обрабатывать запросы GET, PUT, PATCH и DELETE: возвращать, изменять или удалять отдельный объект модели Post. В файл urls.py добавьте эндпоинт api/v1/posts/<int:pk>/, который будет вызывать view-класс APIPostDetail(). Подсказка:Опишите методы get(), put(), patch() и delete(). Не забудьте импортировать в urls.py класс APIPostDetail(). Код views.py: Архив проекта:

View-классы API в Django. Задание 1

Напишите view-класс APIPost(), унаследовав его от APIView.Он будет работать с queryset, содержащим все объекты модели Post. При POST-запросе этот класс должен создавать новый объект модели Post и возвращать его, а по GET-запросу должен возвращаться сериализованный список всех объектов модели Post. Подсказка:Код аналогичен тому, что вы делали в прошлом уроке. Но написан он должен быть в объектно-ориентированном стиле. В файл urls.py добавьте […]

View-функции API. Задание 2

Напишите view-функцию api_posts_detail(), которая обрабатывает запросы GET, PUT, PATCH и DELETE: возвращает, перезаписывает, изменяет или удаляет объект модели Post по его id. В файл urls.py добавьте эндпоинт api/v1/posts/<int:pk>/, который должен вызывать view-функцию api_posts_detail(). Подсказка:Для удаления объекта используйте его метод delete(), остальное вы уже делали. При удалении объекта сериализация не используется. В urls.py импортируйте view-функцию api_posts_detail(). Используйте параметр partial, чтобы разрешить частичные обновления. Код views.py: Архив всего […]