build my life

[DRF] Serializer ์‚ฌ์šฉ๋ฒ• ๋ณธ๋ฌธ

Django

[DRF] Serializer ์‚ฌ์šฉ๋ฒ•

dalovee 2023. 7. 21. 16:19
728x90

๐Ÿ“Œ 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) ๋ชจ๋“œ๋กœ ์ž‘๋™ํ•จ

 

728x90