[Django] Serializer의 이해-2025-04-15

정지은·2025년 4월 15일
2

나머지공부

목록 보기
16/17

✅ Serializer란?

🔍 한 줄 정의

Python 객체를 → JSON으로 바꾸고,
JSON을 → Python 객체로 바꿔주는 번역기!


🎯 왜 필요해?

예시 상황:

너가 장고로 쇼핑몰 API를 만들었다고 해보자!

  • DB에 이런 Python 객체가 있어:
User(id=1, name="지은", email="jieun@example.com")
  • 근데 클라이언트(브라우저나 앱)는 이걸 JSON으로 받아야 이해할 수 있어.

👉 그래서 이렇게 바꿔줘야 해:

{
  "id": 1,
  "name": "지은",
  "email": "jieun@example.com"
}

이걸 해주는 게 바로 Serializer야! 🎉
(Python 객체 ↔ JSON 변환기라고 보면 돼)


🔄 Serializer의 두 가지 역할

역할설명비유
직렬화 (serialize)Python 객체 → JSON장고 데이터 → 사용자에게 보여줄 형식
역직렬화 (deserialize)JSON → Python 객체사용자 입력 → DB에 넣을 수 있게 변환

📦 실제 사용 예시

1. 모델이 있다고 해보자

class Product(models.Model):
    name = models.CharField(max_length=100)
    price = models.IntegerField()

2. Serializer 만들기

from rest_framework import serializers

class ProductSerializer(serializers.ModelSerializer):
    class Meta:
        model = Product
        fields = ['id', 'name', 'price']

3. 사용 방법

product = Product.objects.get(id=1)
serializer = ProductSerializer(product)

print(serializer.data)
# 출력: {'id': 1, 'name': '티셔츠', 'price': 30000}

→ Python 객체 → JSON으로 바뀜!


💬 Serializer 없이 하면 어떻게 돼?

  • JSON으로 보내려면 수동으로 딕셔너리 만들고 JsonResponse 써야 해...
  • 근데 Serializer를 쓰면 자동으로 유효성 검사, 변환, 에러 처리까지 다 해줌!!

🔐 추가로 좋은 점

유효성 검사(validation)도 자동으로 해줌
예를 들어 price가 마이너스일 때 자동으로 에러 반환 가능!

ModelSerializer는 장고 모델 기반으로 쉽게 만들 수 있어서 훨씬 편리함


🎁 요약 정리

개념설명
SerializerPython 객체 ↔ JSON 형식 변환기
왜 필요해?API에서는 JSON을 주고받아야 하니까
주요 역할직렬화(보낼 때), 역직렬화(받을 때)
장점유효성 검사, 자동 변환, 유지 보수 쉬움

0개의 댓글