[파이썬] Django REST 프레임워크를 이용한 시리얼라이저

Django REST 프레임워크는 Django 기반의 웹 애플리케이션에서 RESTful API를 손쉽게 개발하기 위한 강력한 도구입니다. 이 프레임워크를 사용하면 데이터를 직렬화하고 역직렬화하는 작업을 위한 시리얼라이저를 쉽게 정의할 수 있습니다.

시리얼라이저란?

시리얼라이저는 Django REST 프레임워크에서 데이터를 JSON 또는 다른 포맷으로 변환하는데 사용되는 객체입니다. 시리얼라이저를 통해 웹 애플리케이션과 클라이언트 사이에서 데이터를 주고받을 수 있습니다. 이는 데이터를 브라우저에서 소비하거나, 다른 애플리케이션과의 상호작용에 유용합니다.

시리얼라이저 클래스 정의하기

Django REST 프레임워크에서 시리얼라이저 클래스를 정의하는 것은 간단합니다. 먼저, rest_framework.serializers.Serializer 클래스를 상속하여 시리얼라이저를 만들고, 필드를 정의합니다.

from rest_framework import serializers

class BookSerializer(serializers.Serializer):
    title = serializers.CharField(max_length=100)
    author = serializers.CharField(max_length=100)
    publication_date = serializers.DateField()

위의 예제에서 BookSerializerSerializer 클래스를 상속하고 있습니다. 이 시리얼라이저는 title, author, publication_date라는 세 가지 필드를 가지고 있습니다. 필드는 CharFieldDateField와 같은 시리얼라이저 클래스를 사용하여 정의됩니다.

객체 직렬화하기

시리얼라이저 객체를 사용하여 Django 모델 인스턴스를 JSON로 변환할 수 있습니다.

book = Book(title='Django for Beginners', author='William Vincent', publication_date='2020-01-01')
serializer = BookSerializer(book)
serialized_data = serializer.data

위의 예제에서 Book 모델 인스턴스 bookBookSerializer를 사용하여 직렬화 하고 있습니다. 이를테면 serializer.data는 다음과 같은 결과를 반환할 것입니다:

{
    'title': 'Django for Beginners',
    'author': 'William Vincent',
    'publication_date': '2020-01-01'
}

데이터 역직렬화하기

사용자가 제출한 데이터를 시리얼라이저를 사용하여 역직렬화할 수도 있습니다.

data = {
    'title': 'Django for Beginners',
    'author': 'William Vincent',
    'publication_date': '2020-01-01'
}
serializer = BookSerializer(data=data)
if serializer.is_valid():
    book = serializer.save()

위의 예제에서 BookSerializerdata 인자에 사용자가 제출한 데이터를 전달하고 있습니다. is_valid() 메서드를 사용하여 데이터의 유효성을 검사한 뒤, save() 메서드를 호출하여 데이터를 역직렬화하고 모델 인스턴스를 생성합니다.

결론

Django REST 프레임워크를 사용하면 시리얼라이저를 이용하여 데이터를 직렬화하고 역직렬화할 수 있습니다. 이를 통해 RESTful API를 손쉽게 개발하고, 웹 애플리케이션과 클라이언트 사이에서 데이터를 주고받는 작업을 효율적으로 처리할 수 있습니다.