궁금한게 많은 개발자 노트

django serializer란 본문

Back End

django serializer란

궁금한게 많은 개발자 2022. 4. 12. 10:23

Serialize(직렬화)

쿼리셋,모델 인스턴스 등의 complex type(복잡한 데이터)를 JSON, XML등의 컨텐트 타입으로 쉽게 변환 가능한 python datatype으로 변환시켜줌

Serializer는 우리가 Django 에서 사용하는 파이썬 객체나 queryset 같은 복잡한 객체들을 REST API에서 사용할 json 과 같은 형태로 변환해주는 어댑터 역할을 한다.

Deserialize

받은 데이터(크롤링시 parse사용>python datatype)를 validating 한 후, parsed data를 complex type으로 다시 변환

 

간단하게 말해서 django에 저장되어 있는 모델 인스턴스를 REST API에서 사용하는 JSON의 형태로 바꿔주는 것을 말합니다. 다음은 Serializer를 설명하기 위한 코드입니다.

 

 

# test/views.py
from rest_framework.response import Response
from rest_framework.decorators import api_view
from .models import Person
from .serializers import BasePersonSerializer, EmailPersonSerializer

@api_view(['GET'])
def PersonAPI(request, id):
    now_person = Person.object.get(id=id)
    serializer = BasePersonSerializer(now_person)
    return Response(serializer.data)
# => id=1에 대해 리턴된 Response: {'id': 1, 'name': '태뽕', 'phone': '01012345678', 'addr': '주소주소'}

@api_view(['GET'])
def EmailAPI(request, id):
    now_person = Person.object.get(id=id)
    serializer = EmailPersonSerializer(now_person)
    return Response(serializer.data)
# => id=1에 대해 리턴된 Response: {'id': 1, 'email': 'email@email.com'}

 

각 view에서 무언가 데이터를 요청할 때, 지금 예시에서는 PersonAPI는 사람에 대한 데이터, EmailAPI에서는 이메일에 대한 데이터를 요청할 때 각각 원하는 형태로 응답해줘야 합니다. 하지만 모델은 하나니 필요한 데이터만 골라서 보내줘야겠죠? 이 역할을 해주는게 시리얼라이저라고 이해하시면 됩니다.

내가 보낼 데이터(now_person(즉, 모델 인스턴스))를 시리얼라이저에 넣어 변환시키고 그 데이터를 응답으로 보내주는 것이 시리얼라이저 - 뷰 연동 개념입니다.

'Back End' 카테고리의 다른 글

django 핵심 기능 - Model  (0) 2022.05.19
django 개발의 기본 사항  (0) 2022.05.19
토큰 기반 인증 시스템과 JWT  (0) 2022.04.19
인증, 인가와 OAuth란  (0) 2022.04.18
AWS의 ALB, NLB  (0) 2022.04.12
Comments