Python 객체를 → JSON으로 바꾸고,
JSON을 → Python 객체로 바꿔주는 번역기!
너가 장고로 쇼핑몰 API를 만들었다고 해보자!
User(id=1, name="지은", email="jieun@example.com")
👉 그래서 이렇게 바꿔줘야 해:
{
"id": 1,
"name": "지은",
"email": "jieun@example.com"
}
이걸 해주는 게 바로 Serializer야! 🎉
(Python 객체 ↔ JSON 변환기라고 보면 돼)
| 역할 | 설명 | 비유 |
|---|---|---|
| 직렬화 (serialize) | Python 객체 → JSON | 장고 데이터 → 사용자에게 보여줄 형식 |
| 역직렬화 (deserialize) | JSON → Python 객체 | 사용자 입력 → DB에 넣을 수 있게 변환 |
class Product(models.Model):
name = models.CharField(max_length=100)
price = models.IntegerField()
from rest_framework import serializers
class ProductSerializer(serializers.ModelSerializer):
class Meta:
model = Product
fields = ['id', 'name', 'price']
product = Product.objects.get(id=1)
serializer = ProductSerializer(product)
print(serializer.data)
# 출력: {'id': 1, 'name': '티셔츠', 'price': 30000}
→ Python 객체 → JSON으로 바뀜!
JsonResponse 써야 해...✅ 유효성 검사(validation)도 자동으로 해줌
예를 들어 price가 마이너스일 때 자동으로 에러 반환 가능!
✅ ModelSerializer는 장고 모델 기반으로 쉽게 만들 수 있어서 훨씬 편리함
| 개념 | 설명 |
|---|---|
| Serializer | Python 객체 ↔ JSON 형식 변환기 |
| 왜 필요해? | API에서는 JSON을 주고받아야 하니까 |
| 주요 역할 | 직렬화(보낼 때), 역직렬화(받을 때) |
| 장점 | 유효성 검사, 자동 변환, 유지 보수 쉬움 |
