당신은 멋쟁이, 우리는 장고쟁이~

0%

DRF Tutorial 5편 - ModelSerializers 사용하기

ModelSerializer 사용하기


우리의 SnippetSerializer 클래스는 Snippet 모델에 있는 많은 정보를 복제하며 사용하고 있습니다.


Django 가 Form 클래스와 ModelForm 클래스를 제공하는 같은 방식으로,


REST FRAMEWORK 은

Serializer 클래스들과 ModelSerializer 클래스들을 가지고 있습니다.


우리의 Serializer 를 ModelSerializer 를 사용하여, 리펙토링 해봅시다.


snippets/serializers.py 파일을 열고, SnippetSerializer 클래스를 아래와 같이 고쳐줍니다.


1
2
3
4
class SnippetSerializer(serializers.ModelSerializer):
class Meta:
model = Snippet
field = ['id', 'title', 'code', 'linnos', 'language', 'style']

serializers 가 좋은 점중 하나는, serializer 인스턴스 안에 모든 필드들을 검사할수 있다는 점입니다. 이는, representation 을 프린트 해보면 됩니다. Django shell 을 python manage.py shell 을 실행하여 열고, 아래 코드들을 실행 시켜 보세요.


1
2
3
4
5
6
7
8
9
10
In [1]: from snippets.serializers import SnippetSerializer                                                                                                                

In [2]: serializer = SnippetSerializer()

In [3]: print(repr(serializer))
SnippetSerializer():
id = IntegerField(label='ID', read_only=True)
title = CharField(allow_blank=True, max_length=100, required=False)
code = CharField(style={'base_template': 'textarea.html'})
linenos = BooleanField(required=False)

ModelSerializer 클래스는 특별하고 마법같은 일은 하지 않습니다.

그저 Serializer 클래스들을 줄여주는 숏컷일 뿐이라는것을 기억하는것이 좋습니다.

아래 일들만 살짝 줄여줄뿐, 또다른 특별한 메서드는 아닙니다.

  • 자동으로 지정된 필드
  • create() 그리고 update() 메서드의 간단한 기본 구현 가능