기술블로그-Django편
📌 Django에서 DRF 사용 시 Serializer가 꼭 필요한 이유
Chansman
2025. 5. 15. 11:36
📌 Django에서 DRF 사용 시 Serializer가 꼭 필요한 이유
Django는 원래 HTML을 렌더링하는 웹 프레임워크입니다. 하지만 **DRF(Django REST Framework)**는 Django 위에서 동작하며, JSON 기반 API 서버를 만들기 위해 사용됩니다.
이때 핵심이 되는 것이 바로 **Serializer(직렬화 도구)**입니다.
✅ 1. 왜 Serializer가 필요한가요?
1️⃣ API는 사람보다 프로그램이 사용한다
- Django는 기본적으로 HTML 페이지를 응답합니다.
- 반면 DRF는 프론트엔드 앱, 모바일 앱 등이 데이터를 JSON으로 요청하고 응답 받습니다.
2️⃣ 모델 인스턴스는 JSON이 아니다
book = Book.objects.get(id=1)
- 이 객체는 Python 클래스 객체이지 JSON 형식이 아닙니다.
- 프론트에 데이터를 보내려면 JSON으로 변환해야 합니다.
3️⃣ Serializer는 데이터 변환 + 유효성 검사 + 저장까지 처리
- Python 객체 → JSON (직렬화)
- JSON → Python 객체 + DB 저장 (역직렬화)
- 자동 유효성 검사 지원
🔄 직렬화 vs 역직렬화
동작 설명 예시
📤 직렬화 | Python → JSON | 응답 데이터를 전송할 때 |
📥 역직렬화 | JSON → Python | POST/PUT 요청 처리 시 |
🧱 실전 예제
📌 모델
class Book(models.Model):
title = models.CharField(max_length=100)
author = models.CharField(max_length=100)
📌 Serializer
from rest_framework import serializers
class BookSerializer(serializers.ModelSerializer):
class Meta:
model = Book
fields = ['id', 'title', 'author']
📤 직렬화 (GET)
book = Book.objects.first()
serializer = BookSerializer(book)
serializer.data
# 출력: {'id': 1, 'title': '어린왕자', 'author': '생텍쥐페리'}
📥 역직렬화 + 저장 (POST)
data = {'title': '해리포터', 'author': 'J.K.롤링'}
serializer = BookSerializer(data=data)
if serializer.is_valid():
serializer.save()
✅ Serializer의 주요 기능
기능 설명
🔁 직렬화 | Python → JSON 응답 생성 |
🔂 역직렬화 | JSON → Python + DB 저장 |
✅ 유효성 검사 | 필드 누락, 형식 오류 자동 체크 |
💾 저장 | .save()로 모델 인스턴스 생성/수정 |
⚠️ 흔한 실수
실수 원인
serializer.data가 비어 있음 | is_valid() 호출 안 함 |
.save() 오류 | 필수 필드 누락, 모델 필드와 매핑 불일치 |
🎯 요약
Django 모델 객체는 API 응답에 직접 쓸 수 없습니다.
DRF에서 Serializer는 Django 객체를 JSON으로 바꿔주고, JSON을 다시 객체로 바꿔주는 필수 연결고리입니다.
Serializer 없이 DRF는 존재할 수 없습니다. REST API 개발의 시작점이자 핵심입니다. 🚀