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을 구현할 수 있다.