django는 직렬화 및 클래스를 사용합니다.

Serializer는 배열과 같은 구조를 json과 같은 구조로 변환하는 모듈입니다.

serializer를 통해 drf를 사용하도록 json 구조를 변경하는 기능을 합니다.

from rest_framework import serializers
from articles.models import Article


class ArticleSerializer(serializers.ModelSerializer):
    class Meta:
        model = Article
        fields = "__all__"

이 필드에 들어오는 모든 데이터를 json 형식으로 반환합니다.

그러면 변환된 데이터를 통해

class ArticleDetail(APIView):
    def get(self, request, article_id, format=None): 
        article = get_object_or_404(Article, id=article_id) 
        serializer = ArticleSerializer(article)
        return Response(serializer.data)

    def put(self, request, article_id, format=None):
        article = get_object_or_404(Article, id=article_id)
        serializer = ArticleSerializer(article, data=request.data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data)
        else:
            return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

    def delete(self, request, article_id, format=None):
        article = get_object_or_404(Article, id=article_id)
        article.delete()
        return Response(status=status.HTTP_204_NO_CONTENT)

기존 function 메소드에서는 def 선언을 통해 request.method가 get 또는 post로 분류되지만 클래스 타입에서는 위와 같은 링크에서 get put dele을 구현할 수 있다.