๐ Django
์น ๊ฐ๋ฐ์ ์ ์ ์๊ฒ ๋ณด์ฌ์ง๋ ๋ถ๋ถ์ธ ํ๋ก ํธ์๋์ ๋ฐ์ดํฐ์ ๋ก์ง์ ๋ด๋นํ๋ ๋ฐฑ์๋๊ฐ ์์ผ๋ฉฐ, Django๋ ๋ชจ๋ ๊ฐ๋ฐ์ด ๊ฐ๋ฅํ ํ์คํ ํ๋ ์์ํฌ๋ฅผ ๋งํจ
๐ Project vs App
- Project : ์น ์๋น์ค ์ ์ฒด
- App : ๊ธฐ๋ฅ์ ๋ํ๋ด๋ ๋จ์ (example: ํ์๊ฐ์ , ์ฅ๋ฐ๊ตฌ๋๋ด๊ธฐ, ๊ตฌ๋งคํ๊ธฐ ๋ฑ)
โช๏ธProject ๊ตฌ์กฐ
- ์ฅ๊ณ ์์ ํ๋ก์ ํธ๋ ์น์ฌ์ดํธ๋ฅผ ๋งํจ
1. Project Root
- ์ต์์ ๋๋ ํ ๋ฆฌ์ธ ํ๋ก์ ํธ ๋ช ๋๋ ํ ๋ฆฌ
- ํ๋ก์ ํธ์ ์ ์ฒด ํ์ผ์ด ๋ค์ด ์๋ ๋๋ ํ ๋ฆฌ
2. manage.py
- ํ๋์ Django ํ๋ก์ ํธ๋ฅผ ์์ฑํ๋ฉด ์๋์ผ๋ก ๋ง๋ค์ด์ง๋ ํ๋ก์ ํธ ๊ด๋ฆฌ๋ฅผ ์ํ ๋ช ๋ น ์ ํธ๋ฆฌํฐ
- Django ์ฑ ์์ฑ, ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ จ ๊ธฐ๋ฅ์ ์ํ, ๊ฐ๋ฐ ์๋ฒ๋ฅผ ์คํ ๋ฑ์ ์๋ฌด์ํ
- ํ๋ก์ ํธ๋ฅผ ์์ฑํ ๋๋ django-admin์ ์ฌ์ฉํ๊ณ ๋๋จธ์ง ๋ชจ๋ ๊ธฐ๋ฅ์ manage.py๋ฅผ ์ฌ์ฉ
- django-admin and manage.py documentation
3. ProjectApp (Django Root)
- Project Root ์์ ์๋ ํ๋ก์ ํธ ๋ช ๋๋ ํ ๋ฆฌ๋ก, ํ๋ก์ ํธ๋ฅผ ์ํ ์ฌ๋ฌ ํ์ผ์ด ๋ด๊ฒจ ์๋ ๋๋ ํ ๋ฆฌ
1) __ init __.py
- __init__.py ํ์ผ์ด ํฌํจ๋ ๋๋ ํ ๋ฆฌ๋ฅผ Python์ ํจํค์ง๋ก ์ธ์ํ๊ฒ๋ ํ๊ธฐ ์ํด์ ์ฌ์ฉ
- python 3.3 ์ดํ ๋ฒ์ ๋ถํฐ๋ ์ด ํ์ผ์ด ์์ด๋ ํจํค์ง๋ก ์ธ์๋์ง๋ง ํ์ ๋ฒ์ ํธํ์ ์ํด ์์ฑ ๊ถ์ฅ
2) settings.py
- Django ํ๋ก์ ํธ์ ์ฌ๋ฌ ๊ฐ์ง ์ค์ ์ ๋ด๊ณ ์๋ ํ์ผ
3) urls.py
- Django ํ๋ก์ ํธ๋ก ๋ค์ด์จ url์ ๋ณด๊ณ ์๋ง์ ๋ก์ง(View)์ผ๋ก ์ฐ๊ฒฐํด์ฃผ๋ ์ญํ ์ ํ๋ ํ์ผ
- Django ํ๋ก์ ํธ์ ๋ชฉ์ฐจ๋ผ๊ณ ํ ์ ์์
4) wsgi.py
- WSGI๋ WebServer Gateway Interface์ ์ฝ์๋ก ํ์ด์ฌ์์ ์น ํต์ ์ ํ๊ธฐ ์ํ ์ผ์ข ์ ์ฝ์(ํ๋กํ ์ฝ)
- ๊ฐ๋จํ๊ฒ ์น ์๋ฒ์ Django ์ดํ๋ฆฌ์ผ์ด์ ์ ์ฐ๊ฒฐํด์ฃผ๋ ์ญํ
- ์ํคํผ๋์ WSGI
โช๏ธApp ๊ตฌ์กฐ
- ์ฑ์ ๋ง๋ค๋ฉด ์๋์ผ๋ก ๋๋ ํ ๋ฆฌ ์์ฑ
- __int__.py : ํด๋น ํ์ผ์ด ์๋ ๋๋ ํ ๋ฆฌ๋ฅผ ํ์ด์ฌ ํจํค์ง๋ก ์ธ์ํ๊ธฐ ์ํด ํ์
- admin.py : ์ฑ์ django ๊ด๋ฆฌ์์ ์ฐ๋ํ๊ธฐ ์ํด ํ์ํ ์ค์ ํ์ผ
- apps.py : ์ฑ์ ๋ํ ์ค์ ์ ๋ฃ์ด๋๋ ํ์ผ, ๊ฐ App๋ง๋ค ์ถ๊ฐ์ ์ธ ๊ธฐ๋ฅ ๋ฐ ์ค์ ์ ๋ฃ์ด์ฃผ๊ธฐ ์ํจ
- migrations ๋๋ ํ ๋ฆฌ : ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ณ๊ฒฝ ์ฌํญ ํ์คํ ๋ฆฌ ๋์
- models.py : django app์์ ์ฌ์ฉํ ๋ฐ์ดํฐ ๋ชจ๋ธ ์ ์ · ๋ฐ์ดํฐ ๋ฒ ์ด์ค ์ฐ๋๊ณผ ๊ด๋ จ๋ ํ์ผ (ํต์ฌ)
- tests.py : ์ฑ์ ๋ํ ํ ์คํธ ์ฝ๋๋ฅผ ์์ฑํ๋ ํ์ผ
- views.py : django app์ ๋ฉ์ธ ๋ก์ง ์ฒ๋ฆฌ์ ๊ด๋ จ๋ ํ์ผ (ํต์ฌ)
- [ํ์ ์ฌํญ] ์ฅ๊ณ ์์ ์๋ก์ด ์ฑ์ ๋ง๋ค์๋ค๋ฉด ์ฅ๊ณ ์๊ฒ ์๋ก์ด ์ฑ์ ๋ง๋ค์๋ค๋ ์ฌ์ค์ ์๋ ค ์ค์ผ ํจ!
- โhow? settings.py์ INSTALLED_APPS ๋ฆฌ์คํธ ์์ {‘์๋ก์ด ์ฑ ์ด๋ฆ'}์ ๋ฃ์ด์ฃผ์ด์ผํ๋ค.
๐ ์ฑ ์์ฑ ๋ช ๋ น์ด
python manage.py startapp {์์ฑํ App ์ด๋ฆ}
#์์
python manage.py startapp foods
โช๏ธReusable App
Reusable App(์ฌ์ฌ์ฉ์ฑ์ด ์๋ App) : ์ฌ๋ฌ ํ๋ก์ ํธ์์ ์ฌ์ฉํ ์ ์๊ฒ ๋ง๋ค์ด์ง App
๐ Reusable App์ ๋ง๋๋ ๋ฐฉ๋ฒ?
- ํ๋์ ๊ธฐ๋ฅ ๋จ์ : ์ฒ์๋ถํฐ ์์ ๋จ์์ App์ผ๋ก ๋๋๋ ๊ฒ์ ์ด๋ ต๋ค
- ์ธ๊ณ์ ์ธ Django ๋ ํผ๋ฐ์ค์ธ DjangoCon ์ฐธ๊ณ : DjangoCon 2008: Reusable Apps
๐ DjangoCon
- ํ ๊ฐ์ง ์ฑ์ ํ ๊ฐ์ง ๊ธฐ๋ฅ์ ํ๊ณ , ๊ทธ ๊ธฐ๋ฅ์ ์ ์ํํด์ผ ํ๋ค.
- ์ฅ๊ณ ๊ฐ๋ฐ์๋ ํ๋ก์ ํธ๋ฅผ ๋ง์ ์ฑ์ผ๋ก ๊ตฌ์ฑํ๋ ๊ฒ์ ๋๋ ค์ํ๋ฉด ์ ๋๋ค.
- ๊ฐ๊ฐ์ ์ฑ์ ์ ์ฐํ๊ฒ ์์ฑํด์ผ ํ๋ค.
- ๋ค๋ฅธ ์ฌ๋์๊ฒ ๋ฐฐํฌ๊ฐ ๊ฐ๋ฅํ๋๋ก ๋ง๋ค์ด์ผ ํ๋ค.