_won_
wonprogrammer
_won_
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ
    • woncoding
      • TIL
      • WIL
    • source Code
      • Python
      • Programmers
      • BAEKJOON

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ๋ฐฉ๋ช…๋ก

ํ‹ฐ์Šคํ† ๋ฆฌ

Github ยท Wonprogrammer
hELLO ยท Designed By ์ •์ƒ์šฐ.
_won_

wonprogrammer

TIL | 11.8.ํ™” [Django : DRF]
woncoding/TIL

TIL | 11.8.ํ™” [Django : DRF]

2022. 11. 9. 15:05

- Django Rest Framework

๐Ÿ”ฅ ์‚ฌ์šฉ์ž๊ฐ€ ์„ ํƒํ•œ ๋…ธ๋ž˜ ์žฅ๋ฅด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋น„์Šทํ•œ ์žฅ๋ฅด์˜ ๋…ธ๋ž˜ ์ถ”์ฒœ์‹œ์Šคํ…œ ํ”„๋กœ์ ํŠธ

ํ•ด๋‹น ํ”„๋กœ์ ํŠธ Git link : https://github.com/wonprogrammer/B2_IIEII_DRF.git


[ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ์ƒ๊ฒผ๋˜ ๋ฌธ์ œ]

ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ…

๋ชฉ์ฐจ

  1. ํ”Œ๋ ˆ์ด ๋ฆฌ์ŠคํŠธ ์ƒ์„ฑ ๋ฌธ์ œ
  2. many to many ํ•„๋“œ serializer
  3. ํ”Œ๋ ˆ์ด๋ฆฌ์ŠคํŠธ ์ƒ์„ธํŽ˜์ด์ง€ ์ด๋™ ์‹œ id๊ฐ’ ํŠน์ •
  4. ํ”„๋ก ํŠธ ํŽ˜์ด์ง€ ์ด๋™ ๋ฌธ์ œ
  5. ํ•œ ํŽ˜์ด์ง€์—์„œ serializer 2๊ฐœ ์ด์ƒ์˜ ๋ฐ์ดํ„ฐ ๋ฐ›์•„์˜ค๊ธฐ
  6. base.html

1. ํ”Œ๋ ˆ์ด ๋ฆฌ์ŠคํŠธ ์ƒ์„ฑ ๋ฌธ์ œ

1. ๋ฌธ์ œ

  • ์‚ฌ์šฉ์ž๊ฐ€ ์—ฌ๋Ÿฌ๊ฐœ์˜ ํ”Œ๋ ˆ์ด๋ฆฌ์ŠคํŠธ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์ง€๋งŒ ๋ฉ”์ธํŽ˜์ด์ง€์—์„œ ๋…ธ๋ž˜๋ฅผ ์ถ”์ฒœ๋ฐ›๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉ์ž์˜ ๋ฉ”์ธ ํ”Œ๋ ˆ์ด๋ฆฌ์ŠคํŠธ ๋ผ๋Š” ๊ฐœ๋…์ด ํ•„์š”

2. ํ•ด๊ฒฐ

  • ๋กœ๊ทธ์ธ ํ›„ ์ฒ˜์Œ ๋…ธ๋ž˜๋ฅผ ๊ณ ๋ฅด๋Š” ํŽ˜์ด์ง€์—์„œ ์ƒ์„ฑ๋˜๋Š” ํ”Œ๋ ˆ์ด๋ฆฌ์ŠคํŠธ๋ฅผ ๋Œ€ํ‘œ ํ”Œ๋ ˆ์ด ๋ฆฌ์ŠคํŠธ๋กœ ์ง€์ •ํ•˜๊ณ  ์ด๊ฒƒ์„ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•ด boolean Field๋กœ is_main์ด๋ผ๋Š” ํ•„๋“œ ์ƒ์„ฑ
user_musicplaylist_create_serializer.save(playlist_user=request.user, is_main=True)

2. many to many ํ•„๋“œ serializer

1. ๋ฌธ์ œ

  • ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ผ ๋•Œ ID๊ฐ’์œผ๋กœ ๋ณด๋‚ด์ง

2. ํ•ด๊ฒฐ

  • ํ•ด๋‹น ํ•„๋“œ์— ๋Œ€ํ•œ serializer๋ฅผ ํ•œ๋ฒˆ ๋” ์ง„ํ–‰

 


3. ํ”Œ๋ ˆ์ด๋ฆฌ์ŠคํŠธ ์ƒ์„ธํŽ˜์ด์ง€ ์ด๋™ ์‹œ id๊ฐ’ ํŠน์ •

1. ๋ฌธ์ œ

  • ํ”Œ๋ ˆ์ด๋ฆฌ์ŠคํŠธ ๊ฐœ๋ณ„ ์กฐํšŒ์‹œ playlist_id๋ฅผ ํŠน์ •ํ•˜์—ฌ ์ด๋™ํ•˜๊ธฐ ์–ด๋ ค์šด ๋ฌธ์ œ
  • playlist_id๋ฅผ fetch์˜ url์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์–ด์•ผํ•จ

2. ํ•ด๊ฒฐ

  • URL ๋‚ด๋ถ€์—์„œ ๋ฌผ์Œํ‘œ(?) ๋’ค์— ๋ถ™์ด๋Š” ์ฟผ๋ฆฌ์ŠคํŠธ๋ง์„ ํ™œ์šฉํ•œ๋‹ค
  • ๋„์šธ HTML ์ฃผ์†Œ ๋’ค์— ํ”Œ๋ ˆ์ด๋ฆฌ์ŠคํŠธ ID๊ฐ’์„ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ „๋‹ฌ
  • URL์— ์žˆ๋Š” playlist_id ๊ฐ’์„ ๊บผ๋‚ด์™€ fetchํ•จ์ˆ˜์— ์ „๋‹ฌ

4. ํ”„๋ก ํŠธ ํŽ˜์ด์ง€ ์ด๋™ ๋ฌธ์ œ

1. ๋ฌธ์ œ

  • ํšŒ์›๊ฐ€์ž…์‹œ ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•˜๊ณ  ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€๋กœ ๋„˜์–ด๊ฐ€์ง€ ์•Š์€ ํ˜„์ƒ

2. ํ•ด๊ฒฐ

  • fetch()ํ•จ์ˆ˜์˜ .then ํ•จ์ˆ˜๋กœ ๊ฐ์ฒด๋ฅผ ๋ฆฌํ„ด ๋ฐ›์•„ ๋ฌธ์ œ ํ•ด๊ฒฐ
if (password_valid(password, password2)) {
       const response = await fetch('your url', {
           headers:{
               'content-type' : 'application/json',
           },
           method:'POST',
           body: JSON.stringify({
               "email":email,
               "username":username,
               "password":password,
           })
       }).then(window.location.replace("login.html"))
       alert("๊ฐ€์ž…๋˜์—ˆ์Šต๋‹ˆ๋‹ค!")
       console.log(response)
   }
   else {
       console.log("์ œ์ถœํ•˜์ง€ ์•Š์Œ")
       window.location.reload()
   }

5. ํ•œ ํŽ˜์ด์ง€์—์„œ serializer 2๊ฐœ ์ด์ƒ์˜ ๋ฐ์ดํ„ฐ ๋ฐ›์•„์˜ค๊ธฐ

1. ๋ฌธ์ œ

  • ํ•œ ํŽ˜์ด์ง€ ๋‚ด์—์„œ 2๊ฐœ ์ด์ƒ์˜ serializer๋กœ ๊ฒ€์ฆํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์˜ค๋Š” ๋ชปํ–ˆ์Œ

2. ํ•ด๊ฒฐ

  • views.py ์—์„œ serializer ํ•œ data ๋ฐ์ดํ„ฐ๋ฅผ dictionary ํ˜•ํƒœ๋กœ 2๊ฐœ ์ด์ƒ ๋„ฃ์–ด์ฃผ๊ณ  response์— ์ „๋‹ฌ 

6. base.html

1. ๋ฌธ์ œ

  • DRF Front ๊ฐœ๋ฐœ์€ ์•„๋ž˜ ์ฝ”๋“œ์™€ ๊ฐ™์ด Django Templates Languege ์—์„œ ์ผ๋˜ Templates ์ƒ์†์ด ๋ถˆ๊ฐ€๋Šฅํ–ˆ๋‹ค.
{% block title %}{% endblock title %}
    {% block content %}

    {% endblock %} 

2. ํ•ด๊ฒฐ

  • ๊ทธ๋ž˜์„œ ์ž‘์—…ํ•ด๋‘” base.html ๋ชจ๋“  html์— ๋ถ™์—ฌ์ฃผ์—ˆ๊ณ , Templates ์ƒ์†๊ณผ ๋‹ค๋ฅด๊ฒŒ ์ƒ์†๋˜๋Š” html ํŽ˜์ด์ง€์— ์žˆ๋Š” ๊ธฐ๋Šฅ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”๊ฒƒ์ด ์•„๋‹ˆ์˜€๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ๊ฐ์˜ ํŽ˜์ด์ง€์— ๋งž๊ฒŒ ์ปค์Šคํ…€๋งˆ์ด์ง•ํ•ด์ค˜์„œ ๋”์šฑ ๊ฐ„ํŽธํ•˜๊ฒŒ ํŽ˜์ด์ง€๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค.

 

 

์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ ๋ณ€๊ฒฝ๊ธˆ์ง€ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'woncoding > TIL' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

TIL | 11.10.๋ชฉ [Algorithm]  (1) 2022.11.10
TIL | 11.9.์ˆ˜ [DRF โ†”๏ธ JS CRUD ]  (0) 2022.11.10
TIL | 11.7.์›” [Django : DRF]  (0) 2022.11.09
TIL | 11.4.๊ธˆ [Django : DRF]  (0) 2022.11.08
TIL | 11.3.๋ชฉ [Django : DRF]  (1) 2022.11.04
    'woncoding/TIL' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • TIL | 11.10.๋ชฉ [Algorithm]
    • TIL | 11.9.์ˆ˜ [DRF ↔๏ธ JS CRUD ]
    • TIL | 11.7.์›” [Django : DRF]
    • TIL | 11.4.๊ธˆ [Django : DRF]
    _won_
    _won_
    Coding Practice blog

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”