Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- Python
- event loop
- 자바스크립트
- dockerfile
- IAM
- Django
- elasticsearch
- 쿠버네티스
- asyncio
- EC2
- EKS
- terraform
- IAC
- POD
- leetcode
- AWS
- docker
- Kubernetes
- Service
- YAML
- DevOps
- ansible
- github
- intervals
- WSGI
- K8S
- FastAPI
- ebs
- Deployment
- asgi
Archives
- Today
- Total
궁금한게 많은 개발자 노트
django serializer란 본문
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