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