- Django Rest Framework
๐ฅ ์ฌ์ฉ์๊ฐ ์ ํํ ๋ ธ๋ ์ฅ๋ฅด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋น์ทํ ์ฅ๋ฅด์ ๋ ธ๋ ์ถ์ฒ์์คํ ํ๋ก์ ํธ
ํด๋น ํ๋ก์ ํธ Git link : https://github.com/wonprogrammer/B2_IIEII_DRF.git
[ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉด์ ์๊ฒผ๋ ๋ฌธ์ ]
ํธ๋ฌ๋ธ ์ํ
๋ชฉ์ฐจ
- ํ๋ ์ด ๋ฆฌ์คํธ ์์ฑ ๋ฌธ์
- many to many ํ๋ serializer
- ํ๋ ์ด๋ฆฌ์คํธ ์์ธํ์ด์ง ์ด๋ ์ id๊ฐ ํน์
- ํ๋ก ํธ ํ์ด์ง ์ด๋ ๋ฌธ์
- ํ ํ์ด์ง์์ serializer 2๊ฐ ์ด์์ ๋ฐ์ดํฐ ๋ฐ์์ค๊ธฐ
- 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 |