
๊ฐ์๋๋ค...(์ง๊ธ๊น์ง ์ด๊ฑฐ๋ ๊ด๋ จ์๋ค๊ณ ์๊ฐํจ)
์ฐพ์๋ณด๋ ์ฅ๊ณ ๋ผ๋ ์ด๋ฆ์ ์ ์์๊ฐ ์ข์ํ๋ ๊ธฐํ๋ฆฌ์คํธ ์ฅ๊ณ ๋ผ์ธํ๋ฅดํธ์ ์ด๋ฆ์์ ๋ฐ์จ ๊ฒ์ด๋ผ๊ณ ํ๋ค.(์ญ์ ์คํ๊ตฌ๊ธฐ์ง์ด ์ข ์์ด์ผ ํ์ด์ฌ๋ ์ข์ํ๋ ๋ฐด๋์ด๋ฆ์์ ๋ฐ์จ๊ฑธ๋ก ์)
๋ณธ๋ก ์ผ๋ก ๋์ด๊ฐ์
์ ๋ฌธ์ฌ ์ธํด ์น ํ๋ก๊ทธ๋๋จธ์ธ ์์ด๋๋ฆฌ์ ํด๋ก๋ฐํฐ์ ์ฌ์ด๋จผ ์๋ฆฌ์จ์ด ํ์ด์ฌ์ ์ฌ์ฉํด ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค๊ธฐ ์์ํ๋ฉฐ ๊ฐ๋ฐ๋๊ฒ ์ฅ๊ณ ์ด๋ค. ๋น์ ํฐ ๊ท๋ชจ์ ์น๊ฐ๋ฐ์ ์ ํฉํ ํ์ด์ฌ ๋๊ตฌ๊ฐ ์๋๊ฑธ ์๊ณ ์๋กญ๊ฒ ๊ฐ๋ฐํ๋ค๊ณ ํ๋ฉฐ ์ฌ๋ด์ฉ์ด๋ ์ฅ๊ณ ๋ฅผ ์ค๋๊ธฐ์ ์ ์ค๋ํด ์คํ์์ค๋ก ์ ํ์์ผฐ๋ค๊ณ ํ๋ค
Django๋ ์ ์ง๋ณด์๊ฐ ํ์ํ website๋ฅผ ์ฝ๊ณ ๋น ๋ฅด๊ฒ ๊ฐ๋ฐํ ์ ์๋๋ก ๋์์ฃผ๋ ์คํ์์ค์ Python Web framework ์ด๋ค. ์น ๊ฐ๋ฐ๊ณผ ๊ด๋ จ๋ ๊ท์ฐฎ์ ๋ฐ๋ณต ์์
์ ์ฝ๊ฒ ์ฒ๋ฆฌํ ์ ์๋๋ก ๋ชจ๋ํ ํ์ฌ ์ ๊ณตํจ์ผ๋ก์จ,๊ฐ๋ฐ์๋ (์ด๋ฏธ ์๋ ๊ฒ์ ๋ง๋๋๋ผ) ์ธ๋ฐ์์ด ์๊ฐ์ ๋ญ๋นํ ํ์๊ฐ ์์ด(reinvent the wheel)์์ ์ application ๊ณ ์ ๊ธฐ๋ฅ์ ๋ํ ๊ฐ๋ฐ์๋ง ์ ๊ฒฝ ์ธ ์ ์๋ค.
ํ์ด์ฌ์ผ๋ก ์์ฑ๋ MVC(->์ฅ๊ณ ์์๋ MTV๋ผ๊ณ ๋ฐ๊ฟ ์ด๋ค)ํจํด์ ๋ฐ๋ฅด๊ณ ์๋ค.
์น ํ๋ก๊ทธ๋๋ฐ ์์ญ์ 3๊ฐ์ง ๊ฐ๋ ์ผ๋ก ๋๋ ๊ฐ๋ฐํ๋ ๋ฐฉ์
Model/Template(์ฅ๊ณ ์์๋ ์ด๊ฑธ๋ก ๋์ฒดํด์ ์ด๋ค)/View๊ทธ๋ฆฌ๊ณ User์์ ๊ด๊ณ๋ฅผ ํํํ ๊ทธ๋ฆผ(์ ๊ธฐ์ ์ผ๋ก ๋์๊ฐ๋ ๊ด๊ณ์ธ๊ฒ!)
์ด๋ ๊ฒ ๋ณต์กํ๊ฒ ๊ณผ์ ์ ๋๋๋ ์ด์ ๋ ํน์ ์์ญ์ ๋ถ๋ฆฌํ๋๊ฒ ์ค์ํ๊ธฐ ๋๋ฌธ!
๋ ๋ณต์กํ ๋ด์ฉ๋ค์ด ์๋๋ฐ

์ผ๋จ ์ด ๊ฐ๋
๋ค์ ์ฐจ์ฐจ ๋ฐฐ์ธํ
๋ ์ด๋ฐ๋๋์ด๊ตฌ๋ ์ ๋๋ง ์๋ฉด ๋ ๋ฏ..
์๋ ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ฃ ์ฟผ๋ฆฌ๋ฅผ ๋ง๋ค์ด ๋ฐ์ผ๋ฉด ๊ทธ๊ฑธ ๋ด ๋ณ์์ ๋ฃ๊ณ ํ๋ ๊ณผ์ ์ ๋งค๋ฒ ๋ฐ๋ณตํ์ด์ผ ํ๋๋ฐ, ์ฅ๊ณ ์์๋ ๋ณ์๋ง ์ง์ ํ๋ฉด ์์์ ์ด ๋ชจ๋ ๊ณผ์ ์ ์ฒ๋ฆฌํด์ค
์ ์ฒด์ ์ผ๋ก ๋ณด๋ฉด ์ด๋ฐ๋๋์ด๋ค
์ผ๋ฐ์ ์ผ๋ก ์๊ฐ๋๋ ์น์ฌ์ดํธ๋ผ๊ณ ์ดํดํ๋ฉด ๋๋ค. ํ๋ก์ ํธ ์์๋ ๋ค์ํ ๊ธฐ๋ฅ์ด ์๋ค. ๊ทธ ์๋ฏธ์๋ ํ๋์ ๊ธฐ๋ฅ๋ค์ ์ฑ์ผ๋ก ๊ด๋ฆฌํ๋๊ฒ
$django-admin startproject tutorial

๋ผ๊ณ ์
๋ ฅํ๋ฉด ์์๊ฐ์ ๊ตฌ์กฐ๊ฐ ์์ฑ๋๋ค.
<setting.py๋?>
์ ์ฒด์ ์ธ ํ๋ก์ ํธ์ ํ๊ฒฝ์ ๊ด๋ จ๋ ์ค์ ์ ๋ด์๋ ํ์ผ
- DEBUG : ์๋ฌ๋ฅผ ํ์ธํ๊ณ ์ถ์๋ debug๋ฅผ True๋ก ํด๋์ผ๋ฉด๊ฐ๋ฅํ๋ค(๋์ ๋ฐฐํฌ์์๋ False)
- Installed_apps : PIP๋ก ์ค์นํ ์ฑ ๋๋ ๋ณธ์ด ๋ง๋ app์ ์ถ๊ฐ(๋ด๊ฐ ๋ง๋ ๊ฑฐ๋, ๋จ์ด ๋ง๋ ๊ฑฐ ์ถ๊ฐ ๊ฐ๋ฅ) ๋ฑ๋ก์ํ๋ฉด ์ธ์ ๋ชปํ ๊ฐ๋ฅ์ฑ๋์
- Middleware_classes : request์ response์ฌ์ด์ ์ฃผ์๊ธฐ๋ฅ ๋ ์ด์ด(ํฌ๊ฒ๋ ์ ๊ฒฝ ์์จ๋ ๋จ, ์ธ์ฆ์ด๋ ๋ณด์๊ด๋ จํ ๊ณณ์ผ๋ก ๋ค์ํ ๊ธฐ๋ฅ์ ํจ)
- Templates : Django template๊ด๋ จ ์ค์ , ์ค์ ๋ทฐ(html,๋ณ์)
- Datebases : ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ง์ ์ฐ๊ฒฐ์ค์ (์ด๋ํฐ๋ฅผ ๋ค์ด๋ฐ์์ ๊ทธ์ ๋ง์ถฐ ์ฐ๊ฒฐ์ค์ ์ ๋ฐ๊ฟ์์๋๋ฐ, ์ฌ๊ธฐ์ ๊ฐ๋ฅํ๋ค)
- Static_url : ์ ์ ํ์ผ์ url(css,javascript,image,etc)
- ๋ฐ์ดํฐ ๋ฒ ์ด์ค ์ค์ : ๊ธฐ๋ณธ์ ์ผ๋ก sqlite3๋ฅผ ๊ฐ์ง๊ณ ์๋ค. ์ํ๋ฉด ๋ณ๊ฒฝ ๊ฐ๋ฅ(๋์ ๊ฒฝ์ฐ MySQL์ฌ์ฉ์ค์ด๋ผ ๋ณ๊ฒฝํด์ค์ผํจ)
- ํ์์กด ์ง์ : ์ต์ด์๋ ์ธ๊ณํ์ค์(UTC)๋ก ์ค์ . ํ๊ตญ์๊ฐ์ผ๋ก ๋ณ๊ฒฝํด์ค์ผ ํ๋ค
<manage.py?>
ํ๋ก์ ํธ ๊ด๋ฆฌ ๋ช ๋ น์ด๋ฅผ ๋ชจ์๋์ ๊ณณ์ด๋ค. ์ฐ๋ฆฌ๋ ์ด๊ณณ์์ ๋ง์๊ฑธ ํ๊ฒ ๋ ๊ฒ์
- startapp - ์ฑ์์ฑ
- runserver - ์๋ฒ ์คํ
- createsuperuser - ์ด์ฐฝ๊ธฐ์ ๊ด๋ฆฌ์ ์์ฑ์ ์ฌ์ฉ
- makemigrations app - app์ ๋ชจ๋ธ ๋ณ๊ฒฝ์ฌํญ ์ฒดํฌ
- migrate - ๋ณ๊ฒฝ ์ฌํญ์ DB์ ๋ฐ์
- shell - ์์ ํตํด ๋ฐ์ดํฐ๋ฅผ ํ์ธ
- collectstatic -staticํ์ผ์ ํ๊ณณ์ ๋ชจ์
ex) ์๋ฒ๋ฅผ ๋๋ฆฌ๊ณ ์ถ๋ค?
./manage.py runserver 0.0.0.0:8080
(Django๋ ๊ธฐ๋ณธ port๊ฐ 8000์ด์ง๋ง, ์ด๊ฑด ์ธ๋ถ์ ์์ด ์๋จ. ๊ทธ๋์ ์์์ฒ๋ผ ์์ฑํ๋๊ฑฐ)
project๋ด๋ถ์ ๋ค์์ app์ด ์์ฑ๋๋ค.
$./manage.py startapp community

ํ๋ก์ ํธ ๋ด์ ๋ค์์ app์ด ์์ฑ๋๋ค
<models.py?>
Django Model์ด๋ผ๋ ORM์ ์ ๊ณตํ๋ ๊ณณ์ผ๋ก(๋ค์๋ฒ์ ๋ฐฐ์!) ํ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ ์ด๋ธ์ ํ๋์ ํ์ด์ฌ ๋ชจ๋ธ ํด๋ผ์ค์ ๋งคํํ๋ฉฐ django.db.models.Modelํด๋์ค๋ฅผ ์์๋ฐ๋๋ค. Django Model์ ์ฐ๋ฉด ์ง์ SQL์ ์น ์ผ์ด ๋ง์ด ์ค์ด๋ ๋ค.
->ํน์ models.py๋ด์ ๋ณ๋์ด ์๊ธฐ๋ฉด ๋ณ๋๋ด์ญ์ ๋ฐ๋ก migrate(๋ณ๋์ ๋ฐ์ํด์ฃผ๋๊ฑธ ๋งํจ)ํด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์ํด์ค์ผํจ(์๊ทธ๋ฌ๋ฉด ๋๋ฆฌ๋๊ฒ ์ง..?)์์์ ์์ฃผ ์ฌ์ฉํ๋ ๋งค์๋
- models.CharField : ๊ธ์์๊ฐ ์ ํ๋ ํ ์คํธ ์ ์, ๊ธ ์ ๋ชฉ ๊ฐ์ด ์งง์ ๋ฌธ์์ด ์ ๋ณด ์ ์ฅํ ๋ ์ฌ์ฉ
- models.TextField : ๊ธ์์๊ฐ ์ ํ์ด ์๋ ํ ์คํธ (๋ธ๋ก๊ทธ ์ฝํ ์ธ ์ฒ๋ผ)
- models.DateTimeField : ๋ ์ง์ ์๊ฐ์ ์๋ฏธ
- models.ForeignKey : ๋ค๋ฅธ ๋ชจ๋ธ์ ๋ํ ๋งํฌ
<view.py>
๋จผํ๋ (๊ฐ๊น์ด๋ฏธ๋)ํ๋ก์ ํธ๋ฅผ ๋ง๋ค๋ฉด์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ ํ์ผ...
์ค์ง์ ์ผ๋ก ์ ์ ์ ์์ฒญ์ ์ค์ ๋ก ์ฒ๋ฆฌํ๊ธฐ์ํ ํจ์์ ํํ๋ก ๊ตฌํํ๋ฉฐ application์ '๋ก์ง'์ ๋ฃ๋ ๊ณณ์ด๋ค.
๋ชจ๋ธ์์ ํ์ํ ์ ๋ณด๋ฅผ ๋ฐ์์(from ๋ฐ์ดํฐ ๋ฒ ์ด์ค) ํ ํ๋ฆฟ์ ์ ๋ฌํ๋ ์ญํ ์ ํ๋ค.
->๋ก์ง ๊ตฌ์ฑ์ ๋ฐ๋ผ ํจ์๋ก ์ฝ๋ฉํ๋ ํจ์ํ/ํด๋์ค๋ก ์ฝ๋ฉํ๋ ํด๋์คํ ๋ทฐ๋ก ๋๋๋ค
๊ฐ๋ฐ์๋ Django๋ฅผ ์ฌ์ฉํจ์ผ๋ก์ ๋ผ๋๋ฅผ ๊ตฌ์ํด๋ด๋ ์๊ฐ์ ๋จ์ถํ ์ ์๋ค.
๋๊ฐ์ ์ฝ๋ฆฐ์ด๋ค์ด ๊ฐ๋ฐ์ ์ข๋ ์ฝ๊ฒ ์ ๊ทผํ ์ ์๋ ์ด์ ์ค์ ํ๋๊ฐ ์๋๊น? ์ถ๋ค ใ ใ ๋กํ ์ฅ๊ณ ~-
์๋ ํ์ธ์. ์ ๋ง ์ ๋ฆฌ๋ฅผ ์ ํ์ จ๋ค์. ๋ง์ด ๋ฐฐ์ฐ๊ณ ๊ฐ๋๋ค. ์ ๋ ์ด๋ ๊ฒ ์ฒด๊ณ์ ์ผ๋ก ๊น๋ํ๊ฒ ์ ๋ฆฌํ๊ณ ์ถ๋ค์.
(TMI: ๊ท๋ ๋ฐ ๋ก์ธ์ 1989๋ ํฌ๋ฆฌ์ค๋ง์ค์ ํ ๊ฒ ์์ด์ ์ฝ๋ฉ๋ ๊ทธ๋ฃน Monty Python์ ์ด๋ฆ์ ๋ฐ์ Python ์ด๋ผ๋ ์ธ์ด๋ฅผ ๋ง๋ค์๋ค๊ณ ํฉ๋๋ค. https://www.python.org/doc/essays/foreword/)