[DRF] Serializer ์ฌ์ฉ๋ฒ
๐ Serializer
1. Comment ๋ฐ์ดํฐ ์ค ๋งจ ์ฒซ๋ฒ์งธ ๋ฐ์ดํฐ๋ง c0์ ํ ๋น
2. Serializer๋ฅผ ํตํด c0 ๋ฐ์ดํฐ๋ฅผ ์ง๋ ฌํ ํ๋ค
3. sr.data -> dictํ์
4. JSONRenderer๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํธ ์คํธ๋ง ํ์์ผ๋ก ๋ณํ
- key : value ํ์
๐ Dserializer
1. data0๋ฅผ json ์ง๋ ฌํํ ๊ฐ์ ๋ฐ์๋ค๊ณ ๊ฐ์ -> json0
2. json0์ ๋ฐ๋ก parse()ํ๋ฉด ์ค๋ฅ ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ BytesIO ํด๋์ค๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ด์ค๋ค. -> dictํ์์ผ๋ก ๋ฐ๋
3. dict -> instanceํ : ์ญ์ง๋ ฌํํ ๋์๋ data์ ๋ฃ์ด์ฃผ๊ณ ์ง๋ ฌํํ ๋๋ instance์ ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ด์ค๋ค.
>>> CommentSerializer(data=ddata0)
4. dsr.is_valid() ๋ฌด์กฐ๊ฑด ํธ์ถ! -> ์ ํจ์ฑ๊ฒ์ฌ -> ์ฌ์ฉ์๋ก ๋ถํฐ ๋ฐ์ ๋ฐ์ดํฐ๊ฐ ์ค๋ฅ๊ฐ ์๋์ง ํ์ธ
5. ๋ง์ฝ False๋ผ์ ์๋ฌ๊ฐ ์๋ค๋ฉด dsr.errors ํธ์ถํด์ ์๋ฌ ๋ด์ฉ ํ์ธ
6. ์ ํจ์ฑ๊ฒ์ฌ๋ฅผ ๋ง์น ๋ฐ์ดํฐ๋ validated_data๋ผ๋ ์์ฑ์ ๋ด๊ธฐ๊ฒ ๋๊ณ
7. db์ ๋ฃ์ ์ธ์คํด์ค ๋ฐ์ดํฐ๋ฅผ ๋ง๋ค ๋์๋ validated_data๋ก ๋ง๋ค๊ฒ ๋จ
>>> instance = Comment(**dsr.validated_data)
>>> instance.save()
DRF์์๋ Serializer ํ๋๋ก ์ง๋ ฌํ/์ญ์ง๋ ฌํ ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
1. save()ํ๋ ๊ณผ์ ์์ create(), update() ๋ฅผ ํธ์ถํ๊ฒ ๋๋๋ฐ ์ง๋ ฌํ ๊ณผ์ ์์๋ ํธ์ถํ์ง ์๋๋ค.
2. ์ง๋ ฌํ - Read(GET), ์ญ์ง๋ ฌํ - Write(POST, UPDATE, DELETE, PATCH) ๋ชจ๋๋ก ์๋ํจ