본문 바로가기

카테고리 없음

시리얼라이즈와 class 를 사용한 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__"

를 통해서 field에 오는 데이터들을 전부 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)

기존의 함수방식에서는 def를 통해 선언하고 if request.method 를 통해서 get 인지 post인지 구분을 했지만 class형에서는 위와 같은 방식으로 해서 같은 링크 안에서 get put dele를 구현할수있습니다