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

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

Подсказка:
Код аналогичен тому, что вы делали в прошлом уроке. Но написан он должен быть в объектно-ориентированном стиле.

В файл urls.py добавьте эндпоинт api/v1/posts/, который вызывает view-класс APIPost(). Не забудьте его импортировать.

Не стесняйтесь пользоваться кодом из Kittygram: там решалась очень похожая задача, и в листингах есть всё необходимое.

Код views.py:

from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework import status

from .models import Post
from .serializers import PostSerializer


class APIPost(APIView):
    def get(self, request):
        post = Post.objects.all()
        serializer = PostSerializer(post, many=True)
        return Response(serializer.data)

    def post(self, request):
        serializer = PostSerializer(data=request.data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data, status=status.HTTP_201_CREATED) 
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) 

Архив с остальными файлами проекта:

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

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