Сериализатор готов, самое время проверить его в работе — отправить запрос и в ответ получить 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)
Архив проекта: