728x90
반응형
장고에서 시리얼라이저를 사용하다 보니 어떤 필드들이 있는지 궁금해졌다. 그래서 공식 문서를 읽고 필드들을 기술해보려 한다.
공식 문서: https://www.django-rest-framework.org/api-guide/fields/#serializer-fields
많..다 너무 많다. 이만큼 다양한 필드의 직렬화를 제공하는 만큼 시리얼라이저가 강력한 기능임을 알 수 있다. 실제 라이브러리의 serializers.py를 보면 어떻게 매핑되어 사용되고 있는지, 해당 필드 안에선 어떻게 validation check를 하는지 등을 알 수 있다.
Serializer fields
시리얼라이저는 원시 값들과 내부 데이터 타입 사이의 컨버팅을 조정하는 역할을 한다. 또한 입력 값의 유효성 검사와 부모 객체 값을 검색 및 설정하는 작업도 처리한다.
Core arguments
코어 전달 인자에는 read_only, write_only, required가 있다.
- read_only: 말 그대로 읽기 전용 필드로 설정한다.
- write_only: 쓰기 전용 필드로 설정한다.
- required: 필수 필드이다. 기본적으로 True이며 blank=True, default나 null=True 옵션을 넣으면 False가 된다.
- default: 기본 값을 설정한다.
- allow_null: 널 값을 허용한다.
- source: 필드를 채울 값을 설정한다. 예를 들면 email = serializers.EmailField(source="user.email")과 같이 직렬화 할 때 전달받은 값(예: 유저)에서 특정 필드를 찾아 채운다.
- validators: 유효성 검사기 함수 목록이다. serializers.ValidationError를 지원하며 django 내장의 ValidationError 또한 지원한다.
- error_messages: 에러 메세지와 에러 코드 딕셔너리다.
- label: HTML 양식 필드 또는 필드 이름으로 사용할 수 있는 짧은 텍스트이다.
- help_text: 필드의 설명이다.
- initial: HTLM 양식필드의 값을 미리 채우는데 사용한다. Django와 마찬가지로 Callable을 전달할 수 있다. 예를 들면 day = serializers.DateField(initial=datetime.date.today)와 같이 사용한다.
- style: 렌더러가 필드를 렌더링하는 방법을 제어하는 데 사용할 수 있는 딕셔너리이이다. 아래와 같이 타입을 정하거나 html 템플릿을 설정한다.
# Use <input type="password"> for the input.
password = serializers.CharField(
style={'input_type': 'password'}
)
# Use a radio input instead of a select input.
color_channel = serializers.ChoiceField(
choices=['red', 'green', 'blue'],
style={'base_template': 'radio.html'}
)
Boolean Fields
728x90
반응형
'Backend > Django' 카테고리의 다른 글
Django order_by와 annotate, extra 활용 (0) | 2024.03.13 |
---|---|
Django queryset 파보기 (0) | 2024.03.12 |
Django의 create()와 perform_create() (1) | 2024.03.12 |
Django Tutorial 6: ViewSets & Routers (0) | 2024.03.12 |
Django Tutorial 5: Relationships & Hyperlinked APIs (0) | 2024.03.12 |