๋ชฉ๋ก์Šคํ„ฐ๋””/Web (9)

Study Anything ๐Ÿง

[GCP] ๊ตฌ๊ธ€ ํด๋ผ์šฐ๋“œ ํ”Œ๋žซํผ์œผ๋กœ ์„œ๋ฒ„ ๊ตฌ์ถ•ํ•˜๊ธฐ (1) - ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ

ํ”„๋กœ์ ํŠธ ๊ฐœ๋ฐœ์ด ๋ชจ๋‘ ๋๋‚œ ํ›„ ๊ทธ ํ”„๋กœ์ ํŠธ์˜ ๋งˆ์ง€๋ง‰ ๋‹จ๊ณ„๋Š” ๋‹จ์—ฐ์ฝ” ์„œ๋ฒ„์— ์˜ฌ๋ ค์„œ ์ž˜ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ผ ๊ฒƒ์ด๋‹ค. ๋งˆ์นจ ์–ผ๋งˆ ์ „์— ํ”„๋กœ์ ํŠธ ๊ฐœ๋ฐœ์ด ๋ชจ๋‘ ๋๋‚˜์„œ ์„œ๋ฒ„์— ์˜ฌ๋ ค๋ณด๋ ค๋Š” ์ค‘์ธ๋ฐ ์—ฌ๋Ÿฌ ์„œ๋ฒ„ ํ”Œ๋žซํผ์ด ์žˆ์ง€๋งŒ, GCP๊ฐ€ ๋ฌด๋ฃŒ ์ฒดํ—˜ํŒ ๋“ฑ ๋ฌด๋ฃŒ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•๋“ค์ด ์žˆ์–ด์„œ ์šฐ๋ฆฌ๋Š” Google Cloud Platform(์ดํ•˜ GCP)๋ฅผ ์ด์šฉํ•ด์„œ ์„œ๋ฒ„์— ์˜ฌ๋ ค๋ณด๋ ค๊ณ  ํ•œ๋‹ค. ๋จผ์ € GCP ์ฝ˜์†”์— ์ ‘์†ํ•œ๋‹ค. https://console.cloud.google.com/ ๊ทธ ๋‹ค์Œ์œผ๋กœ๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. ํ˜น์‹œ ์ด๋ฏธ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค์–ด์„œ ๋Œ€์‹œ๋ณด๋“œ๊ฐ€ ๋œฌ๋‹ค๋ฉด ์ƒ๋‹จ์˜ ํ”„๋กœ์ ํŠธ ์ด๋ฆ„์„ ํด๋ฆญํ•ด ๋œจ๋Š” ์ฐฝ์— ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๋ฒ„ํŠผ์ด ์žˆ๋‹ค. ํ”„๋กœ์ ํŠธ ์ด๋ฆ„๊ณผ ์œ„์น˜๋ฅผ ์„ค์ •ํ•˜๊ณ  '๋งŒ๋“ค๊ธฐ' ๋ฒ„ํŠผ์„ ํด๋ฆญํ•œ๋‹ค. ํ”„๋กœ์ ํŠธ๊ฐ€ ์ƒ์„ฑ๋˜๋ฉด..

์Šคํ„ฐ๋””/Web 2022. 3. 2. 00:00
[Django] ํ•œ ํ”„๋กœ์ ํŠธ ๋‚ด์—์„œ ๋‹ค๋ฅธ ์•ฑ์˜ ๋ชจ๋ธ ์‚ฌ์šฉํ•˜๊ธฐ

ํ”„๋กœ์ ํŠธ๋ฅผ ์—ฌ๋Ÿฌ ๋ช…์ด ํ•จ๊ป˜ ์ง„ํ–‰ํ•˜๋‹ค๋ณด๋‹ˆ ๊ฐ ํŒ€์›์ด ์„œ๋กœ ๋‹ค๋ฅธ ์•ฑ์„ ๊ตฌํ˜„ํ•˜๊ฒŒ ๋˜๋Š”๋ฐ, ์ด ๋•Œ ๋‹ค๋ฅธ ์•ฑ์˜ ๋ชจ๋ธ ํ•„๋“œ๋ฅผ ์™ธ๋ž˜ํ‚ค๋กœ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ๋ชจ๋ธ ์ž์ฒด๋ฅผ ๋‚ด ์•ฑ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•˜๋ฉด ๋˜๋Š”์ง€์— ๋Œ€ํ•œ ๋‚ด์šฉ์„ ๋‹ค๋ค„๋ณด๋ ค๊ณ  ํ•œ๋‹ค. ํŽธ์˜์ƒ ๋‚ด ์•ฑ์˜ ์ด๋ฆ„์€ 'myapp', ๋‹ค๋ฅธ ํŒ€์›์˜ ์•ฑ ์ด๋ฆ„์€ 'yourapp'์œผ๋กœ ์„œ์ˆ ํ•˜๋„๋ก ํ•˜๊ฒ ๋‹ค. ๋ชจ๋ธ๋“ค์˜ ๋‚ด์šฉ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. # myapp/models.py class Review(models.Model): ... userId = models.ForeignKey(User, on_delete=models.CASCADE) ... # yourapp/models.py class User(models.Model): ... Review ๋ชจ๋ธ์—์„œ๋Š” User ๋ชจ๋ธ์„ ์™ธ๋ž˜ํ‚ค๋กœ ์‚ฌ์šฉํ•˜์ง€๋งŒ ..

์Šคํ„ฐ๋””/Web 2022. 2. 9. 00:03
[Django] DRF : Serializer ๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ•, ์œ ํšจ์„ฑ ๊ฒ€์ฆ

์ฐธ๊ณ  : https://www.django-rest-framework.org/api-guide/serializers/ ์žฅ๊ณ  ๋ ˆ์ŠคํŠธ ํ”„๋ ˆ์ž„์›Œํฌ(Django REST Framework)๋ฅผ ์ด์šฉํ•ด REST API ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•˜๋‹ค๋ณด๋ฉด Serializer๋ฅผ ๊ฑฐ์˜ ํ•„์ˆ˜์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค. ํ•˜์ง€๋งŒ Serializer๊ฐ€ ์–ด๋–ค ๊ฐœ๋…์ธ์ง€ ์ž˜ ์™€๋‹ฟ์ง€ ์•Š์•„์„œ Serializer์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ•˜๊ณ  ์•Œ๊ฒŒ ๋œ ๊ฒƒ๋“ค์„ ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค. (1) Serializer๋ž€? ์ฟผ๋ฆฌ์…‹์ด๋‚˜ ๋ชจ๋ธ ์ธ์Šคํ„ด์Šค ๊ฐ™์€ ๋ณต์žกํ•œ ๋ฐ์ดํ„ฐ๋“ค์„ ๋„ค์ดํ‹ฐ๋ธŒ ํŒŒ์ด์ฌ ๋ฐ์ดํ„ฐ ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ json, xml ๋“ฑ์˜ ์ปจํ…์ธ  ํƒ€์ž…์œผ๋กœ ์‰ฝ๊ฒŒ ๋ Œ๋”๋งํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค. ๋ฐ์ดํ„ฐ๋ฅผ ์ง๋ ฌํ™”ํ•˜๋Š” Serializer๋Š” ์—ญ์ง๋ ฌํ™” ๊ธฐ๋Šฅ ๋˜ํ•œ ์ œ๊ณตํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋“ค์–ด์˜ค๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ฆํ•œ ํ›„์— ๋ถ„..

์Šคํ„ฐ๋””/Web 2022. 1. 30. 23:28
[Django] DRF : REST API๋ฅผ ํ†ตํ•ด ์žฅ๊ณ ์™€ ๋ฆฌ์•กํŠธ ์—ฐ๊ฒฐํ•˜๊ธฐ

์žฅ๊ณ ์™€ ๋ฆฌ์•กํŠธ๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ์—ฌ๋Ÿฌ ๋ฐฉ๋ฒ• ์ค‘ DRF(Django REST Framework)๋ฅผ ํ™œ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค. REST API ๋ฅผ ํ†ตํ•˜๋ฉด ๋ฐ์ดํ„ฐ์˜ CRUD(Create, Read, Update, Delete)๋ฅผ ์‰ฝ๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด๋ฒˆ ํฌ์ŠคํŠธ์—์„œ๋Š” ํŠนํžˆ ๋ฐ์ดํ„ฐ์˜ Create, ๋ฆฌ์•กํŠธ์—์„œ ์ž‘์„ฑํ•œ ๊ธ€์„ ์žฅ๊ณ  ๋ชจ๋ธ์— ๋“ฑ๋กํ•˜๋Š” ๊ณผ์ •์„ ๋‹ค๋ค„๋ณด๋ ค๊ณ  ํ•œ๋‹ค. (๋ฆฌ์•กํŠธ์™€ ์žฅ๊ณ ์˜ ์„ค์น˜๋Š” ์ƒ๋žตํ•˜๋„๋ก ํ•˜๊ฒ ๋‹ค.) ์žฅ๊ณ  REST API ๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๊ณผ์ •์€ ์ด์ „ ํฌ์ŠคํŠธ์—์„œ ๋‹ค๋ฃจ์—ˆ๋‹ค. ์žฅ๊ณ  ๋ชจ๋ธ์„ json ๊ฐ์ฒด๋กœ ์ถ”์ถœํ•˜๊ธฐ (DRF) ์žฅ๊ณ ๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋‹ค ๋ณด๋ฉด ํ”„๋ก ํŠธ์™€ ์—ฐ๋™ํ•˜๊ฒŒ ๋  ๋•Œ๊ฐ€ ์žˆ๋‹ค. ์ด ๋ฐฉ๋ฒ•๋“ค์€ ์ด์ „ ํฌ์ŠคํŠธ(link)์—์„œ ์ž์„ธํžˆ ์„ค๋ช…ํ–ˆ๊ณ , ์ด ํฌ์ŠคํŠธ์—์„œ๋Š” ๊ทธ ์ค‘ ์žฅ๊ณ ์—์„œ ๋งŒ๋“  ๋ชจ๋ธ์„ json ๊ฐ์ฒด๋กœ ์ถ”์ถœํ•ด์„œ ์ ‘..

์Šคํ„ฐ๋””/Web 2022. 1. 29. 23:34
[Django] DRF : ์žฅ๊ณ  ๋ชจ๋ธ์„ json ๊ฐ์ฒด๋กœ ์ถ”์ถœํ•˜๊ธฐ

์žฅ๊ณ ๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋‹ค ๋ณด๋ฉด ํ”„๋ก ํŠธ์™€ ์—ฐ๋™ํ•˜๊ฒŒ ๋  ๋•Œ๊ฐ€ ์žˆ๋‹ค. ์ด ๋ฐฉ๋ฒ•๋“ค์€ ์ด์ „ ํฌ์ŠคํŠธ(link)์—์„œ ์ž์„ธํžˆ ์„ค๋ช…ํ–ˆ๊ณ , ์ด ํฌ์ŠคํŠธ์—์„œ๋Š” ๊ทธ ์ค‘ ์žฅ๊ณ ์—์„œ ๋งŒ๋“  ๋ชจ๋ธ์„ json ๊ฐ์ฒด๋กœ ์ถ”์ถœํ•ด์„œ ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ๋‹ค. Django REST Framework(DRF)๋Š” ์›น์—์„œ REST API ์„œ๋ฒ„๋ฅผ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ์˜คํ”ˆ์†Œ์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋‹ค. ๋‹ค์–‘ํ•œ ๊ธฐ๊ธฐ์™€ ํ”Œ๋žซํผ์ด ๋งŒ๋“ค์–ด์ง€๋ฉด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃฐ ๋•Œ ๊ธฐ์กด์˜ ๋ฐฉ๋ฒ•์— ํ•œ๊ณ„๊ฐ€ ์ƒ๊ฒผ๊ณ , ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋“ฑ์žฅํ•œ ๋„๊ตฌ๊ฐ€ REST API์ด๋‹ค. (1) ์ค€๋น„ํ•˜๊ธฐ ๋จผ์ €, DRF ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ํ„ฐ๋ฏธ๋„์—์„œ ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•ด DRF๋ฅผ ์„ค์น˜ํ•œ๋‹ค. pip install djangorestframework ๋‹ค์Œ์œผ๋กœ ๋ฆฌ์•กํŠธ์—์„œ ์žฅ๊ณ ๊ฐ€ ๋งŒ๋“œ๋Š” api์— ์ ‘๊ทผํ•  ์ˆ˜ ..

์Šคํ„ฐ๋””/Web 2022. 1. 19. 22:54
[Django] ๊ธฐ๋ณธ ๊ฐœ๋… (์•ฑ, ๋ชจ๋ธ, ๊ด€๋ฆฌ์ž)

์ฐธ๊ณ : https://wikidocs.net/73306 (1) ์•ฑ ์žฅ๊ณ ์—์„œ๋Š” ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด '์•ฑ'์ด๋ผ๋Š” ํ˜•์‹์„ ์‚ฌ์šฉํ•œ๋‹ค. ํ”„๋กœ์ ํŠธ์— ์•ฑ์„ ๋งŒ๋“œ๋Š” ๋ช…๋ น์–ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. (mysite) C:\(์ƒ๋žต)\DjangoProj\mysite>django-admin startapp myapp#์•ฑ ์ด๋ฆ„: myapp ์•ฑ์ด ์ƒ์„ฑ๋˜์—ˆ์œผ๋‹ˆ ํ•„์š”ํ•œ ๋‚ด์šฉ๊ณผ ๊ตฌํ˜„ํ•  ๊ธฐ๋Šฅ์„ IDE์—์„œ ์ž‘์„ฑํ•˜๊ณ  ๊ฐœ๋ฐœ์„œ๋ฒ„๋ฅผ ๊ตฌ๋™ํ•œ ๋‹ค์Œ ์ฃผ์†Œ ๋’ค์— '/myapp' ๋ฅผ ๋ถ™์ด๋ฉด ํ•ด๋‹น ๊ธฐ๋Šฅ์ด ๊ตฌํ˜„๋œ ์›น ํŽ˜์ด์ง€๊ฐ€ ๋„์›Œ์ง„๋‹ค. ํ•ด๋‹น ํŽ˜์ด์ง€๊ฐ€ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜๋ ค๋ฉด 'ํ”„๋กœ์ ํŠธ/config/urls.py' ์— url ๋งคํ•‘์„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•œ๋‹ค. (...) urlpatterns = [ (...) path('myapp', ํ•จ์ˆ˜๋ช…) (...) ] (...) ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋งคํ•‘์„..

์Šคํ„ฐ๋””/Web 2022. 1. 6. 21:57
[Django] ๊ฐœ๋ฐœํ™˜๊ฒฝ ๊ตฌ์ถ•ํ•˜๊ธฐ

์ฐธ๊ณ : https://wikidocs.net/72280 ์žฅ๊ณ ๋ฅผ ์ฒ˜์Œ ์ ‘ํ•˜๋‹ค๋ณด๋‹ˆ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์ด ๋งˆ๋ จ๋˜์–ด์žˆ์ง€ ์•Š์•„์„œ ์ž๋ฃŒ๋ฅผ ์ฐธ๊ณ ํ•˜๋ฉฐ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ–ˆ๋‹ค. (1) ๊ฐ€์ƒ ํ™˜๊ฒฝ ๊ตฌ์ถ• ๊ฐ€์ƒ ํ™˜๊ฒฝ์„ ๋งŒ๋“œ๋Š” ์ด์œ ๋Š” ์œ„ ์ž๋ฃŒ์— ์ž์„ธํžˆ ์„ค๋ช…๋˜์–ด ์žˆ๋‹ค. ๊ฐ„๋‹จํ•˜๊ฒŒ ์–˜๊ธฐํ•˜์ž๋ฉด ์—ฌ๋Ÿฌ ํ”„๋กœ์ ํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋‹ค๊ฐ€ ํŒŒ์ด์ฌ ๋ฒ„์ „์„ ๋‹ค๋ฅด๊ฒŒ ์‚ฌ์šฉํ•˜๋Š” ๋“ฑ ์ฐจ์ด๋ฅผ ๋‘ฌ์•ผํ•  ๋•Œ๊ฐ€ ์žˆ๋Š”๋ฐ ๊ฐ€์ƒ ํ™˜๊ฒฝ์—์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด ์ด๋Ÿฐ ๊ฒฝ์šฐ์— ๊ฐ ํ™˜๊ฒฝ ๋ณ„๋กœ ๋Œ€์ฒ˜ํ•˜๊ธฐ๊ฐ€ ์‰ฝ๋‹ค. ๋ณธ์ธ์€ mysite ๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ๊ฐ€์ƒ ํ™˜๊ฒฝ์„ ๋งŒ๋“ค์–ด๋ณด์•˜๋‹ค. C:\venvs\mysite\Scripts> activate cmd ์ƒ์—์„œ ์›ํ•˜๋Š” ํด๋”๋กœ ์ด๋™ํ•œ ํ›„, activate ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ๊ฐ€์ƒ ํ™˜๊ฒฝ์œผ๋กœ ์ด๋™ํ•œ๋‹ค. (mysite) C:\venvs\mysite\Scripts> deact..

์Šคํ„ฐ๋””/Web 2022. 1. 5. 22:35