Computer Science/BackEnd

Django API #3 | Serializing and Deserializing Data

토마토. 2022. 9. 11. 20:11

Building APIs with Django and Django Rest Framework (readthedocs.org)

 

Serializing and Deserializing Data

DRF를 이용할 때 web API를 개발하는 과정이 깔끔해진다. 

Serialization and Deserialization

API를 만들기 위해서는 model을 serialize해서 보여주는 시리얼라이저가 필요하다. 

데이터베이스에 있는 내용을 네트워크로 통신할 수 있도록 바꾸는 과정은 serialization이라고 한다. 

Deserialization은 그 반대 과정이다. 

 

Creating Serializers
from rest_framework import serializers
from .models import Poll, Choice, Vote

class VoteSerializer(serializers.ModelSerializer):
    class Meta:
        model = Vote
        fields = '__all__'

class ChoiceSerializer(serializers.ModelSerializer):
    votes = VoteSerializer(many=True, required=False)
    class Meta:
        model = Choice
        fields = '__all__'

class PollSerializer(serializers.ModelSerializer):
    choices = ChoiceSerializer(many=True, read_only=True, required=False)
    class Meta:
        model = Poll
        fields = '__all__'

응답으로 보낼 데이터의 형태를 정해주는 하나의 틀

 

Using the PollSerializer
>>> from polls.serializers import PollSerializer
>>> from polls.models import Poll
>>> poll_serializer = PollSerializer(data={"question":"Mojito or Caipirinha?", "created_by":1})
>>> poll_serializer.is_valid()
True
>>> poll = poll_serializer.save()
>>> poll.pk
1

poll 모델은 user를 갖다쓰므로 무조건 User가 1개 이상이어야 한다.