딕셔너리 자료형을 json 형태로 바꾸는 것을 Serialization이라고 하며, 이렇게 json 형태로 데이터를 주고받게 된다. 그 반대는 Deserialize
json은 파이썬 언어의 딕셔너리 자료형("key":"value")과 비슷한 형태를 하고 있다. 참고
view.py에서 rest_framework api_view로 GET, POST 메소드를 확인할 수 있음.
여기서 퓨어 장고의 절차대로 데이터를 보내면 데이터를 확인할 수가 없는데, 이때 필요한 게 시리얼라이즈이다. 그러니까 데이터를 json 형태의 스트링으로 변환하는 것.
serializers.py
from rest_framework import serializers
from articles.models import Article
class ArticleSerializer(serializers.ModelSerializer):
class Meta:
model = Article
fields = "__all__" # 모든 필드를 다 다루려고 함
클래스형으로 작성한 views.py 참고. class based views
from rest_framework import status
from rest_framework.response import Response
from rest_framework.decorators import api_view
from rest_framework.views import APIView
from rest_framework.generics import get_object_or_404
from articles.models import Article
from articles.serializers import ArticleSerializer # 시리얼라이저 임포트
from drf_yasg.utils import swagger_auto_schema
class ArticleList(APIView):
def get(self, request, format=None):
articles = Article.objects.all()
serializer = ArticleSerializer(articles, many=True)
return Response(serializer.data)
@swagger_auto_schema(request_body=ArticleSerializer)
def post(self, request, format=None):
serializer = ArticleSerializer(data = request.data)
if serializer.is_valid(): # 유효성 검사
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
else:
print(serializer.errors)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
api view로 서버를 껐다 켰다 하지 않고도 메소드, http status code 등을 바로바로 확인할 수 있다. swagger도 적용하여 https://로컬포트/swagger/ 로도 확인할 수 있음.

