📌 Django에서 DRF 사용 시 Serializer가 꼭 필요한 이유

2025. 5. 15. 11:36·기술블로그-Django편

📌 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 개발의 시작점이자 핵심입니다. 🚀

'기술블로그-Django편' 카테고리의 다른 글

✅ Django DRF에서 Serializer 유효성 검사, 내부 구조까지 완전 정복!  (0) 2025.05.15
📌 @staticmethod는(데코레이터(decorator)) 무엇인가요?  (0) 2025.05.15
📌 Django REST Framework(DRF)란?  (0) 2025.05.15
🧠 Django 클래스 기반 뷰(CBV)의 속성들, 왜 쓰는지 헷갈린다면?  (0) 2025.05.15
🔍 Django에서 'results = ...' 와 {'results': results}가 왜 둘 다 나오나요?  (0) 2025.05.15
'기술블로그-Django편' 카테고리의 다른 글
  • ✅ Django DRF에서 Serializer 유효성 검사, 내부 구조까지 완전 정복!
  • 📌 @staticmethod는(데코레이터(decorator)) 무엇인가요?
  • 📌 Django REST Framework(DRF)란?
  • 🧠 Django 클래스 기반 뷰(CBV)의 속성들, 왜 쓰는지 헷갈린다면?
Chansman
Chansman
안녕하세요! 코딩을 시작한 지 얼마 되지 않은 초보 개발자 찬스맨입니다. 이 블로그는 제 학습 기록을 남기고, 다양한 코딩 실습을 통해 성장하는 과정을 공유하려고 합니다. 초보자의 눈높이에 맞춘 실습과 팁, 그리고 개발하면서 겪은 어려움과 해결 과정을 솔직하게 풀어내려 합니다. 함께 성장하는 개발자 커뮤니티가 되기를 바랍니다.
  • Chansman
    찬스맨의 프로그래밍 스토리
    Chansman
  • 전체
    오늘
    어제
    • 분류 전체보기 (702)
      • Python (32)
      • 프로젝트 (43)
      • 과제 (25)
      • Database (40)
      • 멘토링 (11)
      • 특강 (37)
      • 기술블로그 (40)
      • 기술블로그-Fastapi편 (33)
      • 기술블로그-Django편 (153)
      • 기술블로그-Flask편 (36)
      • AI 분석 (4)
      • HTML & CSS (31)
      • JavaScript (17)
      • AWS_Cloud (21)
      • 웹스크래핑과 데이터 수집 (14)
      • Flask (42)
      • Django (77)
      • Fastapi (16)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Chansman
📌 Django에서 DRF 사용 시 Serializer가 꼭 필요한 이유
상단으로

티스토리툴바