[Threepark] 3. ๋ชจ๋ธ ์„œ๋น™ - (1) Flask ์ž‘์„ฑ
ยท
๐Ÿฅ”Project/[Project] Threepark
์ด๋ฒˆ์—๋Š” GPU์„œ๋ฒ„์— ์˜ฌ๋ฆด Flask ๋ฅผ ์ž‘์„ฑํ•œ๋‹ค.Flask์—์„œ๋Š” ๋ชจ๋ธ์„ ๋กœ๋“œํ•˜๊ณ , ๋ฐฑ์—”๋“œ API์— ํ•„์š”ํ•œ AI์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.GPU๋น„์šฉ ๋ฌธ์ œ๋กœ, GPU๊ฐ€ ๊ผญ ํ•„์š”ํ•œ ๊ฒฝ์šฐ๋งŒ ์ด ์„œ๋ฒ„์—์„œ ๋™์ž‘ํ•œ๋‹ค.์†Œ๊ฐœFlask์—์„œ๋Š” ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.1. generate comment : ์ผ๊ธฐ ์ž‘์„ฑ ๋‚ด์šฉ์„ ๋ฐ”ํƒ•์œผ๋กœ ์‘์› ๋ฌธ๊ตฌ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.2. generate image : ๋ฐฑ์—”๋“œ๋กœ๋ถ€ํ„ฐ ์ด๋ฏธ์ง€ ์ƒ์„ฑ ํ”„๋กฌํ”„ํŠธ๋ฅผ ๋ฐ›๊ณ , ํŠœ๋‹๋œ ๋””ํ“จ์ „ ๋ชจ๋ธ์„ ๋กœ๋“œํ•˜์—ฌ ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.3. emotion classification : ์ผ๊ธฐ ์ž‘์„ฑ ๋‚ด์šฉ์„ ๋ฐ”ํƒ•์œผ๋กœ ๊ฐ์ • ๋ถ„์„ํ•œ๋‹ค.4. recommend music : ๊ฐ์ • ๋ถ„์„ ๊ฒฐ๊ณผ์™€ ํฌ๋กค๋ง์„ ํ†ตํ•ด ์ˆ˜์ง‘ํ•œ ์Œ์•… ๋ฐ์ดํ„ฐ์˜ ๊ฐ์ •๋ถ„์„ ๊ฒฐ๊ณผ๋ฅผ ์‚ฌ์šฉํ•ด ์œ ์‚ฌ๋„๋ฅผ ํ†ตํ•œ ์Œ์•… ์ถ”์ฒœ, ๊ฒฐ๊ณผ ์ด 5๊ฐ€์ง€ ๋ฐ˜ํ™˜  Image์ด..
[Threepark] 3. ๋ฐฑ์—”๋“œ ๊ตฌํ˜„ - (8) DRF ๊ฐœ๋ฐœ | API๋ฌธ์„œ Swagger
ยท
๐Ÿฅ”Project/[Project] Threepark
API ๊ตฌํ˜„์ด ๋๋‚ฌ๋‹ค๋ฉด ํ”„๋ก ํŠธ๋กœ ๊ฐ API์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๋„˜๊ฒจ์ค˜์•ผ ์ž‘์—…์ด ๊ฐ€๋Šฅํ•˜๋‹ค.์ด๊ฒƒ์„ ์šฐ๋ฆฌ๋Š” Swagger๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌํ˜„ํ•œ๋‹ค. ์žฅ๊ณ  REST Framework์—์„œ swagger๋ฅผ ํ†ตํ•ด API๋ฅผ ๋ฌธ์„œํ™” ํ•ด๋ณด์ž.๋จผ์ € drf-ysag์— ๋Œ€ํ•œ ๋ฌธ์„œ๋Š” ์•„๋ž˜์˜ ๋งํฌ๋ฅผ ํ†ตํ•ด ์ด๋™ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ƒ์„ธํ•œ ์ •๋ณด๋ฅผ ์›ํ•œ๋‹ค๋ฉด ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ํ™œ์šฉํ•˜์ž.https://drf-yasg.readthedocs.io/en/stable/install๊ฐ€์ƒํ™˜๊ฒฝ์„ ํ™œ์„ฑํ™” ํ•˜๊ณ  install ํ•˜์ž.pip install -U drf-yasgsettings.pysettings.py์— ๋‹ค์Œ์ด ์ถ”๊ฐ€๋˜์–ด์•ผ ํ•œ๋‹ค.INSTALLED_APPS = [ ... 'django.contrib.staticfiles', # required for serving..
[Threepark] ๋ฐฑ์—”๋“œ ์„œ๋ฒ„์™€ ํ•ต์‹ฌ ๊ธฐ๋Šฅ ๊ตฌํ˜„
ยท
๐Ÿฅ”Project/[Project] Threepark
์ด๋ฒˆ ํฌ์ŠคํŒ…์€ ๋ฐฑ์—”๋“œ ์„œ๋ฒ„ ๊ตฌ์ถ•๊ณผ์ •๊ณผ ํ•ต์‹ฌ ๊ธฐ๋Šฅ ๊ตฌํ˜„์— ๋Œ€ํ•ด ์•Œ์•„๋ณธ๋‹ค.๊ฐœ๋ฐœ ํ™˜๊ฒฝ๊ณผ ์„œ๋ฒ„ ๊ตฌ์„ฑํ•˜๊ธฐ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์„ ์‹œ์ž‘ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ๋ฐ๋ฒ  ์„œ๋ฒ„๋ฅผ ๋จผ์ € ์ƒ์„ฑํ•˜๋„๋ก ํ•œ๋‹ค.RDS๋ฅผ ์ด์šฉํ•ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ๋กœ ํ•˜์˜€๊ณ , MySQL์„ ์‚ฌ์šฉํ•œ๋‹ค.๋ฐ์ดํ„ฐ๋ฒ ์ด์ŠคRDS์ƒ์„ฑAWS์— ํšŒ์›๊ฐ€์ž…์„ ์™„๋ฃŒํ•œ ์ƒํƒœ๋กœ ์‹œ์ž‘ํ•œ๋‹ค.AWS ์ฝ˜์†”์˜ ์„œ๋น„์Šค์—์„œ RDS๋กœ ๋“ค์–ด๊ฐ„๋‹ค. ์ด๋•Œ ์ƒ๋‹จ์˜ region์„ ์„œ์šธ๋กœ ๋ฐ”๊ฟ”์•ผ ํ•œ๋‹ค.์ด์ œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ƒ์„ฑ์„ ๋ˆŒ๋Ÿฌ RDS์ธ์Šคํ„ด์Šค ์ƒ์„ฑ์„ ์‹œ์ž‘ํ•œ๋‹ค.๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ƒ์„ฑ ๊ณผ์ •ํ‘œ์ค€ ์ƒ์„ฑ์„ ์„ ํƒํ•œ๋‹ค.์šฐ๋ฆฌ๋Š” MySQL์„ ์‚ฌ์šฉํ•  ์˜ˆ์ •์ด๋ฏ€๋กœ MySQL์„ ํƒ.๋ฐ”๋กœ ์•„๋ž˜ ์—”์ง„ ๋ฒ„์ „์„ ํ™•์ธํ•˜์ž์šฐ๋ฆฌ๋Š” ํ”„๋ฆฌํ‹ฐ์–ด๋ฅผ ์‚ฌ์šฉํ•  ๊ฒƒ์ด๋ฏ€๋กœ ํ”„๋ฆฌํ‹ฐ์–ด ์„ ํƒ.์‚ฌ์šฉํ•  RDS ์ธ์Šคํ„ด์Šค์˜ ์ด๋ฆ„์„ ์ž…๋ ฅํ•˜๊ณ , ๋งˆ์Šคํ„ฐ ์‚ฌ์šฉ์ž๋ฅผ ์„ค์ •ํ•œ๋‹ค. ๋งˆ์Šคํ„ฐ ์‚ฌ์šฉ์ž ์ด๋ฆ„..
[Capstone Design] 3. ๋ฐฑ์—”๋“œ ๊ตฌํ˜„ - (7) DRF ๊ฐœ๋ฐœ | VIEW
ยท
๐Ÿฅ”Project/[Project] Threepark
ํŽธ๋ฆฌํ•œ API์˜ ๊ตฌ์„ฑ์„ ์œ„ํ•ด์„œ Mixins์™€ GenericViewSet์„ ์‚ฌ์šฉํ•œ๋‹ค.๊ธฐ๋ณธ์ ์œผ๋กœ ์•„๋ž˜์™€ ๊ฐ™์ด ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค. class DiaryViewSet(GenericViewSet, # ๋ฏน์Šค์ธ ์‚ฌ์šฉ์„ ์œ„ํ•ด ๊ผญ ์ถ”๊ฐ€ mixins.ListModelMixin,#๋ฆฌ์ŠคํŠธ API mixins.CreateModelMixin,#์ƒ์„ฑ API mixins.RetrieveModelMixin,#์กฐํšŒ API mixins.UpdateModelMixin,#์ˆ˜์ • API. ๋ถ€๋ถ„ ์ˆ˜์ •๊ณผ ์ „์ฒด ์ˆ˜์ • ์žˆ์Œ mixins.DestroyModelMixin):#์‚ญ์ œ API # ์•„๋ž˜ ํผ๋ฏธ์…˜~์ฟผ๋ฆฌ์…‹..
[Capstone Design] 3. ๋ฐฑ์—”๋“œ ๊ตฌํ˜„ - (6) DRF ๊ฐœ๋ฐœ | PERMISSION
ยท
๐Ÿฅ”Project/[Project] Threepark
๋ทฐ๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ์— ์•ž์„œ์„œ ์ ‘๊ทผ์˜ ์ œ์–ด๋ฅผ ์œ„ํ•œ ์ปค์Šคํ…€ permissions๋ฅผ ์ž‘์„ฑํ•˜์ž. permissions.py๋จผ์ € permissions.py๋ฅผ settings.py๊ฐ€ ์žˆ๋Š” ํด๋”์— ์ƒ์„ฑํ•œ๋‹ค.์ด ํด๋”์— ์ปค์Šคํ…€ permissions๋ฅผ ์ž‘์„ฑํ•  ๊ฒƒ์ด๋‹ค. import permissions.py์˜ ์ƒ๋‹จ์— ๋‹ค์Œ์„ import ํ•ด์•ผ ํ•œ๋‹ค.from rest_framework import permissions Permission ์ž‘์„ฑ์ด ์„ธ๊ฐ€์ง€์˜ permission์„ ์ž‘์„ฑํ• ๊ฒƒ์ด๋‹ค.1. ๋ณธ์ธ์˜ ๋ฐ์ดํ„ฐ๋งŒ ์ ‘๊ทผ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š” IsOwner2. ๋ณธ์ธ๋งŒ ์ˆ˜์ •,์‚ญ์ œํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋˜ ํ—ˆ์šฉ๋œ ํŒ”๋กœ์›Œ์—๊ฒŒ๋Š” ์กฐํšŒํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” IsOwnerOrReadOnly3. ํŒ”๋กœ์ž‰ ์‹ ์ฒญ ์‹œ ๋ณธ์ธ๊ณผ ํŒ”๋กœ์ž‰ ์‹ ์ฒญ์— ๊ด€๋ จ๋œ ์‚ฌ๋žŒ๋งŒ ์กฐํšŒ,ํŽธ์ง‘ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” I..
[Capstone Design] 3. ๋ฐฑ์—”๋“œ ๊ตฌํ˜„ - (5) DRF ๊ฐœ๋ฐœ | SERIALIZER
ยท
๐Ÿฅ”Project/[Project] Threepark
๋ชจ๋ธ ์ž‘์„ฑ์„ ์™„๋ฃŒ ํ›„ ์‹œ๋ฆฌ์–ผ๋ผ์ด์ €๋ฅผ ์ž‘์„ฑํ•˜๋„๋ก ํ•œ๋‹ค. ์‹œ๋ฆฌ์–ผ๋ผ์ด์ €์˜ ๊ฒฝ์šฐ ๋ฏผ๊ฐํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ์—†๋Š”๊ฒฝ์šฐ ๋Œ€์ฒด๋กœ all๋กœ ์ž‘์„ฑํ•˜์˜€์œผ๋ฉฐ, ํŠน์ˆ˜ํ•œ ๊ฒฝ์šฐ์ธ community์™€ diary๋งŒ ์‚ดํŽด๋ณธ๋‹ค. Diary์ผ๊ธฐ์˜ ๊ฒฝ์šฐ ํฌ๊ฒŒ ์ผ๊ธฐ ๋‚ด์šฉ๊ณผ, ์ผ๊ธฐ๋‚ด์šฉ์„ ๋ฐ”ํƒ•์œผ๋กœ ์ƒ์„ฑ๋œ ์Œ์•…, ์ด๋ฏธ์ง€, ๊ฐ์ • ๋ฐ์ดํ„ฐ๋กœ ํฌ๊ฒŒ ๋‚˜๋ˆ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์ด์ค‘ ์Œ์•…์˜ ๊ฒฝ์šฐ๋Š” diary๋ชจ๋ธ์—์„œ fk๋กœ ์ฐธ์กฐํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์Œ์•… ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ์ผ๊ธฐ์™€ ์—ฐ๊ฒฐํ•˜๋Š” ๋ถ€๋ถ„์€ ๋”ฐ๋กœ ๊ตฌ์„ฑํ–ˆ๋‹ค.๋”ฐ๋ผ์„œ ์‹œ๋ฆฌ์–ผ๋ผ์ด์ €๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.1. ์ˆœ์ˆ˜ํ•˜๊ฒŒ ์ผ๊ธฐ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๊ณ , ๋‹ค๋ฅธ ์—ฐ๊ด€ ๋ฐ์ดํ„ฐ๋Š” only read๋กœ ์ฝ์„์ˆ˜๋งŒ ์žˆ๋„๋ก ํ•˜๋Š” DiarySerializer2. ์ผ๊ธฐ ๋‚ด์šฉ์„ ํ† ๋Œ€๋กœ ์Œ์•…์„ ์ถ”์ฒœํ•˜๊ณ , ์Œ์•…-์ผ๊ธฐ๋ฅผ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” DiaryMusicSerialize..
[Capstone Design] 3. ๋ฐฑ์—”๋“œ ๊ตฌํ˜„ - (4) DRF ๊ฐœ๋ฐœ | DB & MODEL
ยท
๐Ÿฅ”Project/[Project] Threepark
์ด์ œ DB Schema๋ฅผ ๊ตฌ์„ฑํ•˜๊ณ , django์˜ Model์„ ์ž‘์„ฑํ•˜์ž DB Schema ๊ตฌ์„ฑDB ์Šคํ‚ค๋งˆ๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ตฌ์„ฑํ•œ๋‹ค.๊ณ„ํš์˜ ๊ณผ์ •์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ˜•ํƒœ๋กœ ๊ตฌ์ƒํ–ˆ๋‹ค. (์ด๋ฏธ์ง€ ์ž์ฒด๋Š” ๊ฒฐ๊ณผ ์ด๋ฏธ์ง€๋‹ค) - ์œ ์ € ์ •๋ณด์˜ ๊ฒฝ์šฐ django์—์„œ ์ œ๊ณตํ•˜๋Š” ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ํ•จ ๋ชจ๋ธ์ด ๋งŽ์€ ํŽธ์ด๋ฏ€๋กœ user, follow, diary, music, image, emotion์˜ ๊ฒฝ์šฐ๋งŒ ์ด์•ผ๊ธฐ ํ•ด ๋ณธ๋‹ค. User ์œ ์ €๋ชจ๋ธ์€ django์˜ auth๋ชจ๋ธ์„ ์‚ฌ์šฉํ•  ๊ฒƒ์ด๋‹ค. ๋”ฐ๋ผ์„œ ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘์„ฑํ•œ๋‹ค.from django.db import modelsfrom django.contrib.auth.models import AbstractUser, BaseUserManagerclass UserManager(Base..
[Capstone Design] 3. ๋ฐฑ์—”๋“œ ๊ตฌํ˜„ - (3) Django์— RDS ์—ฐ๊ฒฐํ•˜๊ธฐ
ยท
๐Ÿฅ”Project/[Project] Threepark
์ด๋ฒˆ์—๋Š” django ์™€ AWS RDS๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณธ๋‹ค. ์„ค์น˜pip install boto3pip install mysqlclient Settings.pyํ”„๋กœ์ ํŠธ์˜ settings.py์— ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘์„ฑํ•œ๋‹ค.  ๊ฐœ๋ณ„ ํ™˜๊ฒฝ๋ณ€์ˆ˜๋“ค์€ ์ด์ „ ํฌ์ŠคํŒ…์„ ํ†ตํ•ด์„œ ์ƒ์„ฑํ•œ .envํŒŒ์ผ์— ์ •์˜ํ•œ๋‹ค.๋ชจ๋‘ ์ €์žฅํ•˜๊ธฐ๋ฅผ ํ•œ๋ฒˆ ๋ˆ„๋ฅด๊ณ ,migration์„ ์ง„ํ–‰ํ•œ๋‹ค.python manage.py migrate
[Capstone Design] 3. ๋ฐฑ์—”๋“œ ๊ตฌํ˜„ - (2) Django Environ์œผ๋กœ ํ™˜๊ฒฝ๋ณ€์ˆ˜ ๊ด€๋ฆฌํ•˜๊ธฐ
ยท
๐Ÿฅ”Project/[Project] Threepark
DRF๋ฅผ ์ด์šฉํ•ด ์„œ๋น„์Šค๋ฅผ ๊ฐœ๋ฐœํ•˜๊ธฐ ์œ„ํ•ด์„œ ๊ด€๋ฆฌํ•ด์•ผ ํ•  ํ™˜๊ฒฝ๋ณ€์ˆ˜๋“ค์„ Django Environ์„ ํ†ตํ•ด ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.ํŠนํžˆ ํ™˜๊ฒฝ๋ณ€์ˆ˜๋‚˜ APIํ‚ค ๋“ฑ ์™ธ๋ถ€๋กœ ์œ ์ถœ๋˜๋ฉด ์•ˆ๋˜๋Š” ์ •๋ณด๋Š” ์ด๋ฅผ ํ†ตํ•ด ๊ด€๋ฆฌํ•ด์•ผ ํ•œ๋‹ค. ์„ค์น˜pip install django-environ .env ์ƒ์„ฑํ”„๋กœ์ ํŠธ์˜ ๋ฃจํŠธ์— .env ํŒŒ์ผ์„ ๋จผ์ € ์ƒ์„ฑํ•ด์ค€๋‹ค. ์ƒ์„ฑ ํ›„์—๋Š” ๊ผญ gitignoreํŒŒ์ผ์— .env๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ๊นƒํ—ˆ๋ธŒ์— ์˜ฌ๋ผ๊ฐ€์ง€ ์•Š๋„๋ก ํ•œ๋‹ค. install django-environ๋‹ค์Œ์„ ํ„ฐ๋ฏธ๋„์— ์ž…๋ ฅํ•˜์—ฌ django-environ์„ ์„ค์น˜ํ•œ๋‹ค.pip install django-environ  .env ์ž‘์„ฑํ™˜๊ฒฝ๋ณ€์ˆ˜๋กœ ์ง€์ •ํ•ด์•ผ ํ•˜๋Š”๊ฐ’๋“ค์„ env์— ์ •์˜ํ•œ๋‹ค.๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘์„ฑํ•ด์•ผ ํ•œ๋‹ค.SECRET_KEY='django-insecure-...'DEB..