1 ๋ถ„ ์†Œ์š”

JsonResponse?

JsonResponse๋Š” Django์—์„œ HTTP ์‘๋‹ต์„ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ํด๋ž˜์Šค์ž„.

Response ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›์€ JSON ํ˜•ํƒœ์˜ HTTP ์‘๋‹ต ํด๋ž˜์Šค๋กœ, dict, list, json ์ง๋ ฌํ™” ๊ฐ€๋Šฅํ•œ ๊ฐ์ฒด ๋“ฑ์˜ ๋ฐ์ดํ„ฐ๋ฅผ JSON ํ˜•ํƒœ๋กœ response ํ•  ์ˆ˜ ์žˆ์Œ.

JsonResponse ํด๋ž˜์Šค๋Š” Response Body๋กœ ์ „๋‹ฌ๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ž๋™์œผ๋กœ JSON์œผ๋กœ ์ง๋ ฌํ™”ํ•˜์—ฌ ์ฒ˜๋ฆฌํ•˜๊ณ , Content-Type ํ—ค๋Ÿฌ๋ฅผ application/json์œผ๋กœ ์„ค์ •ํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ JSON ์‘๋‹ต์ž„์„ ๋ช…์‹œํ•œ๋‹ค.

์ฆ‰, Response ํด๋ž˜์Šค๋Š” ๋‹ค์–‘ํ•œ ์‘๋‹ต์„, JsonResponse๋Š” JSON ํ˜•ํƒœ์˜ ์‘๋‹ต์„ ๋‹ด๋‹นํ•˜๋Š” ๋†ˆ๋“ค์ธ ๊ฒƒ์ด๋‹ค.

์—ฌ๊ธฐ์„œ JsonResponse์— safe ๋ผ๋Š” ์˜ต์…˜ ํ•„๋“œ๊ฐ€ ์กด์žฌํ•˜๋Š”๋ฐ, ์ด๊ฒŒ ๋ญ”์ง€ ๊ถ๊ธˆํ•˜๋‹ค.

safe=False?

JsonResponse๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ JSON ๊ฐ์ฒด๋งŒ ํ—ˆ์šฉํ•˜๋„๋ก ๋˜์–ด์žˆ์Œ.

๋”ฐ๋ผ์„œ JSON ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•  ๋•Œ๋Š” safe=False๋ฅผ ํ•ด์ฃผ๋Š” ๊ฒƒ์ด๋‹ค.

  • ์ฆ‰, json(dict) ์ด์™ธ์˜ ํ˜•์‹๋„ ๋ณ€ํ™˜ ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๋ง์ž„..!
  • ๋งŒ์•ฝ safe=True๋กœ ํ•˜๊ณ , json ์ด์™ธ์˜ ๊ฐ’์„ ๋ณด๋‚ด๋ฉด Type Error๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒƒ์ด๋‹ค!

safe ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ์˜ฌ๋ฐ”๋ฅธ ์‚ฌ์šฉ

>>> response = JsonResponse({"key1":"value1", "key2":"value2"}, safe=True)
>>> response = JsonResponse({"key1":[1, 2, 3], "key2":"value1"}, safe=True)
>>> response = JsonResponse([1, 2, 3], safe=False)

safe ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ์ž˜๋ชป๋œ ์‚ฌ์šฉ

>>> response = JsonResponse([1, 2, 3], safe=True)
>>> response = JsonResponse({[1, 2, 3]}, safe=True)

TypeError: In order to allow non-dict objects to be serialized set the safe parameter to False.

์—ฌ๊ธฐ์„œ safe๋ผ๋Š” ์ด๋ฆ„ ๋•Œ๋ฌธ์— ๋ณด์•ˆ์ ์ธ ์ธก๋ฉด์—์„œ ์ทจ์•ฝํ•˜์ง€ ์•Š์„๊นŒ ํ•˜๋Š” ์˜์‹ฌ์ด ๋“œ๋Š”๋ฐ, ๋ณด์•ˆ์ƒ์˜ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฐ€๋Šฅ์„ฑ์€ ๋‚ฎ๋‹ค๊ณ  ํ•œ๋‹ค.

JSON ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•  ๋•Œ, safe=False๋ฅผ ์„ค์ •ํ•˜๋ฉด ํด๋ผ์ด์–ธํŠธ๊ฐ€ JSON ๋ฐฐ์—ด์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ—ˆ์šฉํ•˜๋Š”๊ฒƒ์ด๋ฉฐ, ์ด๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๋ณด์•ˆ์ƒ์˜ ๋ฌธ์ œ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๋Š” ์š”์ธ์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

ํ•˜์ง€๋งŒ, ํด๋ผ์ด์–ธํŠธ๊ฐ€ JSON ๋ฐฐ์—ด์„ ์•ˆ์ „ํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•œ๋‹ค๋Š” ๊ฐ€์ •ํ•˜์— ๊ทธ๋Ÿฐ ๊ฒƒ์ด๊ณ , ํด๋ผ์ด์–ธํŠธ์—์„œ ์ ์ ˆํ•œ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ์—๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค..

๊ทธ๋Ÿฌ๋ฏ€๋กœ ํด๋ผ์ด์–ธํŠธ์—์„œ JSON ๋ฐฐ์—ด์„ ์•ˆ์ „ํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ๋ผ๋ฉด ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์„ ๊ณ ๋ คํ•ด์•ผ ํ•œ๋‹ค..!

์ฐธ๊ณ  ์ž๋ฃŒ

Response ์™€ JsonResponse

[Django] - Serializers, JsonResponse

ํƒœ๊ทธ:

์นดํ…Œ๊ณ ๋ฆฌ:

์—…๋ฐ์ดํŠธ:

๋Œ“๊ธ€๋‚จ๊ธฐ๊ธฐ