Serializer = Django ↔ 외부(프론트/앱) 사이의 데이터 변환기 + 검증기
# DB에서 꺼낸 Python 객체
todo = Todo.objects.get(pk=1)
# Serializer로 JSON 변환
serializer = TodoSerializer(todo)
print(serializer.data)
# 결과
{
"id": 1,
"title": "공부하기",
"complete": false,
"created_at": "2024-01-01"
}
DB 데이터를 프론트엔드가 읽을 수 있는 JSON 으로 변환
# 프론트엔드에서 보낸 JSON 데이터
data = {"title": "운동하기", "complete": False}
# Serializer로 Python 객체로 변환
serializer = TodoSerializer(data=data)
serializer.save() # DB에 저장
프론트엔드가 보낸 JSON을 DB에 저장할 수 있는 형태로 변환
data = {"title": ""} # 빈 값 전송
serializer = TodoSerializer(data=data)
if serializer.is_valid(): # 유효성 검사
serializer.save()
else:
print(serializer.errors) # {"title": ["필수 항목입니다."]}
잘못된 데이터가 DB에 저장되지 않도록 검증
[ 프론트엔드 / 앱 ]
↕ JSON
[ Serializer ] ← 여기서 변환 + 검증
↕ Python 객체
[ DB (모델) ]
| 역할 | 방향 | 설명 |
|---|---|---|
| 직렬화 | DB → JSON | 프론트에 데이터 전달 |
| 역직렬화 | JSON → DB | 받은 데이터 저장 |
| 검증 | JSON 입력 | 잘못된 데이터 차단 |
Serializer = 공항 입출국 심사대
출국 (직렬화) : 한국어 데이터 → 영어(JSON)로 번역해서 내보냄
입국 (역직렬화) : 영어(JSON) → 한국어 데이터로 번역해서 들여옴
심사 (검증) : 불량 데이터는 통과 ❌