데이터 엔지니어 이것저것

Django Serializer 본문

토이프로젝트

Django Serializer

pastime 2020. 8. 11. 13:53
728x90

Serializer란?

 

Serializers allow complex data such as querysets and model instances to be converted to native Python datatypes that can then be easily rendered into JSON, XML or other content types. Serializers also provide deserialization, allowing parsed data to be converted back into complex types, after first validating the incoming data.

 

Serializer는 쿼리셋과 모델 인스턴트 같은 복잡한 데이터를 네이티브 파이썬 데이터 유형으로 바꾸어

Json, XML 또는 다른 타입으로 쉽게 렌더링하게 해준다.

 

 

Serializer는 크게 5가지 종류가 있다.

 

  • serializers.Serializer
  • serializers.ModelSerializer
  • serializers.HyperlinkedModelSerializer
  • serializers.ListSerializer
  • serializers.BaseSerializer

 

1. serializers.Serializer

 

가장 기본적인 모듈 가장 쉽게 데이터를 serializers, 시리얼라이즈, 직렬화 하는것이다.

주관적인 생각은 data를 보편적으로 json 형태로 보여주는 형식

 

2. serializers.ModelSerializer

The ModelSerializer class provides a shortcut that lets you automatically create a Serializer class with fields that correspond to the Model fields.

 

ModelSerializer 클래스는 모델 필드에 해당하는 필드가 있는 Serializer 클래스를 자동으로 만들 수 있는 바로 가기를 제공한다.

 

기존 1번을 사용할경우 바로 사용할수 없다. create, update 등을 추가적으로 구현해줘야 하는 불편함이 있다.

하지만 ModelSerializer class를 사용함으로써 자동적으로 필드 집합이 생성되고, 간단한 기본 구현을 포함시켜 생성한다.

 

 

 

웹 API 디자인에서 엔티티 간의 관계를 구현해야합니다. 이를 수행하는 방법에는 여러 가지가 있습니다 (DRF 문서에 언급 됨).

  • 기본 키 사용.
  • 엔티티 간 하이퍼 링크 사용.
  • 관련 엔터티에서 고유 식별 슬러그 필드 사용.
  • 관련 엔터티의 기본 문자열 표현을 사용합니다.
  • 상위 표현 내에 관련 엔티티를 중첩합니다.
  • 다른 사용자 지정 표현

HyperlinkedModelSerializer는 ModelSerializer와 다음과 같은 차이점이 있습니다.

  • 기본적으로 id 필드는 포함되지 않습니다.
  • HyperlinkedIdentityField를 사용하는 URL 필드가 포함됩니다.
  • 관계는 PrimaryKeyRelatedField 대신 HyperlinkedRelatedField를 사용합니다.

 

 

 

 

 

 

참고 https://www.django-rest-framework.org/api-guide/serializers/

 

Serializers - Django REST framework

 

www.django-rest-framework.org

 

728x90

'토이프로젝트' 카테고리의 다른 글

API 문서  (0) 2020.08.15
Django View  (0) 2020.08.12
Django Model  (0) 2020.08.11
Django Form  (0) 2020.08.11
Django Class-based views vs Function-based views  (0) 2020.08.10