Сериализаторы в Django. Задание 2

Сериализатор готов, самое время проверить его в работе — отправить запрос и в ответ получить JSON. Но для этого необходимо описать маршрут и дописать view-функцию.

При GET-запросе по адресу api/v1/posts/ должна вызываться view-функция get_post(). В качестве параметра view-функция должна ожидать переменную pk с целочисленным значением. В ответ функция должна возвращать объект публикации по его id.

View-функция get_post() должна возвращать объект JsonResponse. Для этого импортируйте класс JsonResponse из модуля django.http и передайте в конструктор класса JsonResponse данные из сериализатора.

Подсказка:

  • В urls.py для запросов к адресам вида api/v1/posts/... вызовите view-функцию get_post() и передайте в неё целочисленный аргумент pk.
  • В файле views.py опишите view-функцию get_post(), которая принимает параметр pk.
  • В теле view-функции нужно получить объект публикации, соответствующий полученному pk.
  • Объект публикации должен быть передан сериализатору PostSerializer.
  • View-функция должна вернуть объект JsonResponse с параметром serializer.data.

Код views.py:

from django.http import JsonResponse
from . models import Post
from . serializers import PostSerializer
from django.shortcuts import get_object_or_404


def get_post(request, pk):
    if request.method == 'GET':
        post = get_object_or_404(Post, id=pk)
        #post = Post.objects.all()
        serializer = PostSerializer(post, many=False)
        return JsonResponse(serializer.data)

Архив проекта:






Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: