build my life

[DRF] 직렬화란? 본문

Django

[DRF] 직렬화란?

dalovee 2023. 7. 21. 15:59
728x90

DRF 내부에서는 필드명과 각 필드별 속성을 자동으로 지정해서 사용하고 있다.

그래서 필요할 경우 각 필드명과 속성을 정의해 줄 필요가 있다.

 

django Form 클래스는 HTML <form>을 다루기 위한 클래스

django Model 클래스는 DB table을 다루기 위한 클래스

 

위 두개의 클래스는 Serialization(직렬화), Validation(유효성검사) 기능을 제공하고 있음

두개의 기능을 제공하는 클래스가 DRF Serializer임

📌 Serializer가 무엇일까?

1. 메모리 내부 vs 외부

2. 복원시 정보 유지

 

"홍길동" -> 파일 , DB , Network에 보낼 수 있음

내부외 외부의 환경이 다르기 때문에 문자열 그대로 저장할 수 없음

바이트 스트링으로 변환한 다음 저장할 수 있음

 

99 -> 복원할 경우 -> "99"

int -> string integer 정보가 손실됨 -> 문제점

 

이러한 정보 손실 문제점이 클래스를 다룰때에도 발생함!

클래스 정보가 복원했을 때 그대로 저장되어야함

이런 정보를 저장할 때는 직렬화를 한 후 저장을 해야하며 다시 복원할 때는 역직렬화를 해야 복원이 가능하다.

class Person:
    name = 'kim'
    age = 25

 

Serialize -> 외부

내부 <- Deserialize

 

Serialize는 다양하고 복잡하게 할 수 있는데

Json으로 포맷하는 것이 가장 간단한 방법 중 하나이다.

허용되는 자료형 : Number, String, object, List, null

 

 

 

 

728x90

'Django' 카테고리의 다른 글

poetry를 사용하여 가상환경 만들기  (0) 2023.11.02
[DRF] Serializer 사용법  (0) 2023.07.21
[DRF] Serializer : dict-like  (0) 2023.07.21
[DRF] View 관련 자료 - 공부법  (0) 2023.07.17
[DRF] Router  (0) 2023.07.17