DRF 장고 레스트 프레임워크에서 장고 어플리케이션은
API를 요청한 애플리케이션과 JSON 데이터를 주고받을 수 있어야 함
이를 위해서 DB인스턴스를 JSON 데이터를 시리얼라이즈 하거나, 반대로
JOSN 데이터를 DB 인스턴스로 디시리얼라이즈 할 수 있어야 한다.
이를 위해 DRF가 제공하는 것이 Serializer이며, (장고의 Form 클래스와 유사)
이를 상속하여, 특정 모델에 대응하는 시리얼라이즈 하거나, JSON 데이터를 DB 인스턴스로
디시리얼라이즈 할 수 있어야 함
시리얼 라이저에는 직렬화/ 역직렬화 되어야 하는 모델의 필드들이 정의된다. 대응하는 모델의 모든 필드
들을 정의 할 수있고, 일부 필드만 정의할 수도 있다. 여기에서 정의되는 필드의 값들은
시리얼라이즈시 JSON 데이터로 표현할 때 사용이되며, 디시리얼라이즈 시 DB 인스턴스를 생성하거나
수정할 때 사용이 된다.
각 필드에 명시되는 required, max_length, default, 등의 유효성 플래그
들은 해당 필드의 유효성이 어떻게 검사 되어야 하는지를 나타낸다. 더붙어서, 어떤 플래그들은
HTML 에 렌더링 할때와 같이 특정한 상황에서 해당 시리얼라이저가 어떻게 디스플레이되어야 할지를
지정할 수도 있다. (EX, style) 이는 Browsable API 가 화면에 디스플레이되는 방식을 지정하고자 할때
매우 유용하게 쓰인다.
시리얼라이저에는 create() 메소드와 update() 메소드를 정의 해줘야 한다.
create() 메서도는 시리얼라이저를 대상으로
save() 메소드를 호출함으로서 DB 인스턴스를 생성하고자 할 때의 동작을 정의해야 하고,
update() 메소드는 시리얼라이저를 대상으로 save 메소드를 호출함으로서 DB인스턴스를 수정할 때의
동작을 정의해야 한다.
'코딩 > Django' 카테고리의 다른 글
장고 호텔 예약 시스템 (0) | 2023.05.11 |
---|---|
DRF를 이용한 팀프로젝트 진행 (0) | 2023.05.09 |
프로젝트 기획 (1) | 2023.05.08 |
시리얼라이저 복습 (0) | 2023.05.04 |
파일 입출력 (0) | 2023.05.03 |