View

1. Serializer란? (쉽게 이해하기)

DRF에서 Serializer는 데이터를 JSON ↔ Python 객체로 변환해주는 도구야.
예를 들어, Django 모델 데이터를 클라이언트(React, Vue, 모바일 앱 등)에서 사용하려면 JSON 형태로 변환해야 하고,
클라이언트에서 보낸 데이터를 Django가 이해하려면 역직렬화가 필요해.
Serializer는 이 두 가지 작업을 해주지!

Serializer의 3가지 핵심 기능

  1. 직렬화(Serialization)
    • 파이썬 객체 → JSON 형식 변환
    • 클라이언트가 이해할 수 있는 데이터로 변환
  2. 역직렬화(Deserialization)
    • JSON → 파이썬 객체 변환
    • 클라이언트가 보낸 데이터를 서버에서 처리 가능하도록 변환
  3. 데이터 검증(Validation)
    • 유효성 검사 (예: 필수값 체크, 길이 제한 등)

2. Serializer vs. Django Form 비교

특징 Django Form DRF Serializer

주요 목적 HTML 폼 데이터 처리 및 렌더링 API에서 JSON 데이터 직렬화/역직렬화
처리 대상 HTML Form 데이터 JSON, XML 데이터
유효성 검사 HTML 기반 다양한 형식 (JSON, XML)
프론트엔드 연동 HTML 중심 웹·모바일·앱 API에서 쉽게 사용 가능

정리:

  • Django Form → 템플릿 기반 웹 페이지에서 HTML Form 데이터 처리
  • DRF Serializer → API에서 JSON 데이터를 주고받는 데 특화됨

3. 왜 직렬화가 필요할까?

Django에서 모델 데이터를 바로 클라이언트에 전달할 수 없어.
웹에서는 JSON 같은 포맷이 표준이라서, 데이터를 직렬화해서 변환해야 함.

예시:

from myapp.models import Post
from myapp.serializers import PostSerializer

post = Post.objects.all()  # 쿼리셋 (Python 객체)
serializer = PostSerializer(post, many=True)
print(serializer.data)  # JSON 형태로 변환된 데이터

4. DRF Serializer의 종류

  1. ModelSerializer (자동화된 직렬화)
    • Django 모델과 연결해서 필드를 자동으로 직렬화
    class PostSerializer(serializers.ModelSerializer):
        class Meta:
            model = Post
            fields = ['title', 'content']
    
  2. Serializer (수동으로 필드 정의, 더 유연함)
    • 직접 필드를 정의해서 더 많은 커스터마이징 가능
    class PostSerializer(serializers.Serializer):
        title = serializers.CharField(max_length=100)
        content = serializers.CharField()
    

5. RESTful API에서의 DRF Serializer 활용

  • DRF는 RESTful API의 원칙을 따르도록 도와줌.
  • GET, POST, PUT, DELETE 요청을 통해 데이터를 주고받을 때,
    Serializer를 사용하여 데이터를 가공 및 검증 가능.

예시:

from rest_framework.views import APIView
from rest_framework.response import Response

class PostListView(APIView):
    def get(self, request):
        posts = Post.objects.all()
        serializer = PostSerializer(posts, many=True)
        return Response(serializer.data)

6. 결론 및 Serializer 활용 팁

  1. DRF Serializer는 API에서 데이터를 주고받는 데 필수적인 역할을 함.
  2. 직렬화는 데이터 포맷을 변환하는 데 필요하며, JSON 형태로 변환하는 것이 일반적.
  3. ModelSerializer를 사용하면 모델 필드를 자동으로 직렬화할 수 있어 간편.
  4. 직접 커스텀하려면 Serializer 클래스를 사용해서 필드를 정의.
  5. 데이터의 무결성을 위해 유효성 검사를 적극 활용해야 함.

 

Share Link
reply
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31