[python] Django REST framework에서의 데이터 트랜스퍼 처리 방법

Django REST Framework(DRF)은 Django 기반의 웹 애플리케이션을 쉽게 만들고 API를 구축할 수 있는 강력한 프레임워크입니다. DRF는 데이터 트랜스퍼를 효율적으로 처리하기 위한 여러 가지 기능을 제공합니다. 이번 블로그 포스트에서는 DRF에서 데이터를 전달하는 방법을 소개하고, 예제 코드를 통해 실제 구현 방법을 알아보겠습니다.

시리얼라이저(Serializer)를 사용한 데이터 전송

DRF에서는 시리얼라이저(serializer)를 통해 데이터를 전송합니다. 시리얼라이저는 Django의 폼(Form) 클래스와 유사한 기능을 제공하며, 입력 데이터를 파이썬 객체로 변환하고, 파이썬 객체를 JSON 또는 다른 형식으로 직렬화할 수 있습니다.

아래는 DRF 시리얼라이저의 간단한 예제입니다.

from rest_framework import serializers

class MyModelSerializer(serializers.ModelSerializer):
    class Meta:
        model = MyModel
        fields = '__all__'

위의 예제에서 MyModel은 데이터를 전달하기 위한 모델입니다. MyModelSerializerMyModel의 필드를 직렬화하고 역직렬화하기 위한 시리얼라이저입니다. fields = '__all__'MyModel의 모든 필드를 포함한다는 의미입니다. 필요한 필드만 선택하여 포함할 수도 있습니다.

시리얼라이저를 사용한 데이터 전송 방법

DRF에서는 시리얼라이저를 사용하여 다양한 방법으로 데이터를 전송할 수 있습니다. 일반적으로 다음과 같은 방식으로 데이터를 전달합니다.

GET 요청의 Query Parameter로 데이터 전송

GET 요청의 Query Parameter로 데이터를 전송할 때는 시리얼라이저 클래스의 data 인자를 지정할 수 있습니다.

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

class MyAPIView(APIView):
    def get(self, request):
        serializer = MyModelSerializer(data=request.query_params)
        if serializer.is_valid():
            # 유효한 데이터인 경우 처리
            return Response(serializer.data)
        else:
            # 유효하지 않은 데이터인 경우 에러 처리
            return Response(serializer.errors)

위의 예제에서 MyAPIView는 GET 요청을 처리하는 APIView입니다. 요청의 Query Parameter를 MyModelSerializer로 전달하여 데이터를 유효성 검사하고, 유효한 경우 직렬화된 데이터를 반환합니다.

POST 요청의 Body로 데이터 전송

POST 요청의 Body를 통해 데이터를 전송할 때는 시리얼라이저의 data 인자 대신 request.data를 사용합니다.

from rest_framework.decorators import api_view
from rest_framework.response import Response

@api_view(['POST'])
def my_api_view(request):
    serializer = MyModelSerializer(data=request.data)
    if serializer.is_valid():
        # 유효한 데이터인 경우 처리
        serializer.save()
        return Response(serializer.data, status=201)
    else:
        # 유효하지 않은 데이터인 경우 에러 처리
        return Response(serializer.errors, status=400)

위의 예제는 POST 요청을 처리하는 함수 기반 뷰입니다. request.dataMyModelSerializer로 전달하여 데이터를 유효성 검사하고, 유효한 경우 데이터를 저장하고 직렬화된 데이터를 반환합니다.

결론

Django REST Framework에서 데이터를 전송하기 위해 시리얼라이저를 사용하는 방법을 살펴보았습니다. 시리얼라이저를 제대로 활용하면 데이터 트랜스퍼를 쉽게 처리할 수 있으며, 유효성 검사 등의 기능을 활용하여 안정적인 API 개발을 할 수 있습니다. DRF의 공식 문서와 예제 코드를 참고하여 더 자세히 알아보세요.


참고 자료