파이썬/장고
[django][serializer] serializer 와 deserializer 구분하기
글을 쓰는 개발자
2021. 8. 4. 18:39
반응형
Serializers을 왜 쓸까?
클라이언트와 서버간 통신에서 데이터 타입은 참 다양합니다. 대표적으로는 json이 있고, 그 이외에도 xml, yml 등 다양한 데이터 타입이 있습니다. Serializers는 이러한 데이터들을 파이썬 환경에 맞게 바꾸거나 클라이언트에 맞게 보내는 역할을 합니다.
이 때 Serializer는 클라이언트에게 보내는 작업을 합니다.( 자세히 말하자면 Serializers.py는 serializer 과 deserializer 둘 다 작업을 합니다. 그 중 serializer를 설명하겠습니다.)
공식 문서를 보면 다음과 같이 설명되어 있습니다.
Serializing objects(클라이언트에게 보낼 때)
Serializer는 우리가 Django 에서 사용하는 파이썬 객체나 queryset 같은 복잡한 객체들을 REST API에서 사용할 json 과 같은 형태로 변환해주는 어댑터 역할을 한다.
serializer = CommentSerializer(comment)
serializer.data
# {'email': 'leila@example.com', 'content': 'foo bar', 'created': '2016-01-27T15:17:10.375877'}
Deserializing objects(클라이언트로부터 데이터를 받을 때)
import io
from rest_framework.parsers import JSONParser
stream = io.BytesIO(json)
data = JSONParser().parse(stream)
serializer = CommentSerializer(data=data)
serializer.is_valid()
# True
serializer.validated_data
# {'content': 'foo bar', 'email': 'leila@example.com', 'created': datetime.datetime(2012, 08, 22, 16, 20, 09, 822243)}
반응형