Python 3.11.9
Django == 5.0.3
moviepy==1.0.3
pillow==10.3.0
mediapipe==0.10.14
opencv-contrib-python==4.9.0.80
opencv-python == 4.9.0.80
yolov8
ultralytics
psycopg2-binary==2.9.9 # postgreSQL 16.2
virtualenv venv
๋๋
python -m venv venv
๋ช ๋ น์ด๋ฅผ ํ์ฉํ์ฌ ๊ฐ์ํ๊ฒฝ์ ๋ง๋ค์ด ์ค๋๋ค.
source venv/bin/activate
๋ช ๋ น์ด๋ฅผ ํ์ฉํ์ฌ ๊ฐ์ํ๊ฒฝ์ ํ์ฑํ ์์ผ์ค๋๋ค.
.../cliving/page/
์ ์์น์ secrets.json ์ ์ค์นํฉ๋๋ค.
https://www.postgresql.org/download/ # ์ํ๋ ๋ฒ์ ์ ์ค์นํฉ๋๋ค.
# ์ค์น ๊ณผ์ ์์ ์
๋ ฅํ๋ superuser์ ๋น๋ฐ๋ฒํธ๋ฅผ ์ ๊ธฐ์ตํด์ผ ํฉ๋๋ค.
์น์์ postgreSQL์ ์ค์นํ๊ณ ์ด๊ธฐ ๋น๋ฐ๋ฒํธ๋ฅผ ์ค์ ํฉ๋๋ค.
์ค์น๋ SQL Shell์ ์คํํ์ฌ ์ํฐ๋ฅผ ๋ช๋ฒ ๋๋ฅธ ๋ค, ํจ์ค์๋ ์
๋ ฅ๋์ ์ด๊ธฐ ๋น๋ฐ๋ฒํธ๋ฅผ ์
๋ ฅํฉ๋๋ค.
CREATE DATABASE ('๋ฐ์ดํฐ๋ฒ ์ด์ค ์ด๋ฆ');
CREATE USER ('์ ์ ๋ช
') WITH PASSWORD ('๋น๋ฐ๋ฒํธ');
ALTER ROLE ('์ ์ ๋ช
') SET client_encoding TO 'utf8';
ALTER ROLE ('์ ์ ๋ช
') SET default_transaction_isolation TO 'read committed';
ALTER ROLE ('์ ์ ๋ช
') SET TIME ZONE 'Asia/Seoul';
GRANT ALL PRIVILEGES ON DATABASE data_planet_db TO root;
ALTER USER ('์ ์ ๋ช
') SUPERUSER;
secrets.json ํ์ผ์ ์ค์ ๋์ด ์๋ '๋ฐ์ดํฐ๋ฒ ์ด์ค ์ด๋ฆ', '์ ์ ๋ช
', '๋น๋ฐ๋ฒํธ'๋ฅผ ๋ณด๊ณ
์ ๋ช
๋ น์ด๋ฅผ ์ฐจ๋ก๋ก SQL Shell ์์ ์คํํฉ๋๋ค.
์๋์ฐ ๋ก๊ณ ์ฐํด๋ฆญ > ์ปดํจํฐ ๊ด๋ฆฌ > ์๋น์ค ๋ฐ ์์ฉ ํ๋ก๊ทธ๋จ > ์๋น์ค > postgresql-x64-16 ์ ์ฐพ์ ์ฐํด๋ฆญ > ์์
์๋์ฐ ์ต์ ํ ํ๋ก๊ทธ๋จ ๋ฑ์ ์ฌ์ฉํ์ ๋, ์ฝ์์ด ๊บผ์ง๋ ๋ฏ ํฉ๋๋ค.
๊บผ์ง๋ฉด python manage.py runserver๊ฐ ๋์ํ์ง ์์ผ๋ฏ๋ก ์ค๋ฅ ๋ฐ์์ ์ ์ผ์ฃผ๋๋ก ํฉ์๋ค.
pip install -r requirements.txt
๋๋ด๋์ด์๋ requirements.txt๋ฅผ ํ์ฉํ์ฌ ์์กด์ฑ ํจํค์ง๋ฅผ ์ค์นํ์ฌ ์ค๋๋ค.
https://seokii.tistory.com/199
URL ์ฐธ์กฐ
python manage.py makemigrations
python manage.py migrate
์ ๋ช
๋ น์ด๋ฅผ ํ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ด๊ธฐํํด ์ค๋๋ค.
makemigrations ๋ช
๋ น์ด๋ฅผ ์คํ์ํค๋ฉด ๊ฐ ์ฑ๋ณ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ง์ด๊ทธ๋ ์ด์
ํ์ผ๋ค์ด ์์ฑ๋๋
git์ ํ์ฉํ ๋, ์ด๋ ๋ง๋ค์ด์ง๋ ๋ง์ด๊ทธ๋ ์ด์
ํ์ผ๋ค๋ ํธ์ํด ์ค๋๋ค.
python manage.py create_page
์ ๋ช ๋ น์ด๋ฅผ ํ์ฉํ์ฌ ๋ฐ์ดํฐํ์ด์ค์ ํ ์คํธ๋ฅผ ์ํ ์ฌ๋ฌ ํ์ด์ง๋ฅผ ์๋ ์์ฑํฉ๋๋ค. ์ด๋ฅผ ํต๊ณ api ํ์ฉ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
python manage.py runserver
http://127.0.0.1:8000/v1/
ํด๋น URL๋ก ์ ์ํ์ฌ api๋ฅผ ํ์ธํ๊ณ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- cliving-back/
- .github/
- cliving/
- cliving/
- init.py
- asgi.py: ASGI ์ค์ ํ์ผ์ ๋๋ค.
- settings.py: Django ํ๋ก์ ํธ ์ค์ ํ์ผ์ ๋๋ค.
- urls.py: URL ๋ผ์ฐํ ์ค์ ํ์ผ์ ๋๋ค.
- wsgi.py: WSGI ์ค์ ํ์ผ์ ๋๋ค.
- page/
- management/commands/: ์ปค์คํ
๊ด๋ฆฌ ๋ช
๋ น์ด๊ฐ ์์นํ๋ ๋๋ ํ ๋ฆฌ์
๋๋ค.
- create_page.py: ์ฌ๋ฌ ํ์ด์ง๋ฅผ ์๋์ผ๋ก ์์ฑํ๋ ์ปค์คํ ๊ด๋ฆฌ ๋ช ๋ น์ด ํ์ผ์ ๋๋ค.
- migrations/: ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ง์ด๊ทธ๋ ์ด์
ํ์ผ๋ค์ด ์์นํ๋ ๋๋ ํ ๋ฆฌ์
๋๋ค.
- init.py
- ... (๊ธฐํ ๋ง์ด๊ทธ๋ ์ด์ ํ์ผ๋ค)
- admin.py: Django ๊ด๋ฆฌ์ ํ์ด์ง ์ค์ ํ์ผ์ ๋๋ค.
- apps.py: 'Page' ์ฑ ์ค์ ํ์ผ์ ๋๋ค.
- hold_utils.py: ํ๋ ๊ด๋ จ ์ ํธ๋ฆฌํฐ ํจ์๋ค์ด ์์นํ ํ์ผ์ ๋๋ค.
- models.py: ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ชจ๋ธ ์ ์ ํ์ผ์ ๋๋ค.
- pose_detect_utils.py: ํฌ์ฆ ๊ฐ์ง ๊ด๋ จ ์ ํธ๋ฆฌํฐ ํจ์๋ค์ด ์์นํ ํ์ผ์ ๋๋ค.
- serializers.py: ์ง๋ ฌํ ์ค์ ํ์ผ์ ๋๋ค.
- tests.py
- urls.py: 'Page' ์ฑ์ URL ๋ผ์ฐํ ์ค์ ํ์ผ์ ๋๋ค.
- video_utils.py: ๋น๋์ค ๊ด๋ จ ์ ํธ๋ฆฌํฐ ํจ์๋ค์ด ์์นํ ํ์ผ์ ๋๋ค.
- views.py: ๋ทฐ ํจ์์ ํด๋์ค๊ฐ ์์นํ ํ์ผ์ ๋๋ค.
- management/commands/: ์ปค์คํ
๊ด๋ฆฌ ๋ช
๋ น์ด๊ฐ ์์นํ๋ ๋๋ ํ ๋ฆฌ์
๋๋ค.
- cliving/
- cliving_hold_weight.pt: PyTorch ๋ชจ๋ธ ํ์ผ์ ๋๋ค. ํ๋ ํ์์ ์ํ ๊ฐ์ค์น๊ฐ ํฌํจ๋์ด ์์ต๋๋ค.
- debug.log
- manage.py
- requirements.txt: ํ๋ก์ ํธ์ ํ์ํ ํ์ด์ฌ ํจํค์ง ๋ชฉ๋ก์ ๋๋ค.
์ฑ์ฐฝ๋ฏผ @forestsol |
์ฅ์์ค OnlyWonHand @IamWonILuvWon |
๊น๋ช
์ @coladribble |