9 Sat
TIL
[๋ฐฐํ์ ์ค์ง๋ ํ์ด์ฌ ์นํ๋ก๊ทธ๋๋ฐ]
3 ํํ ๋ฆฌ์ผ ๋ฐ๋ผํ๊ธฐ - ์ค๋ฌธ์กฐ์ฌ
3. 1 ํ๋ก์ ํธ ๋ง๋ค๊ธฐ
ํ๋ก์ ํธ ๋ช : polls
์ฅ๊ณ ์ค์น
pip install django
ํ๋ก์ ํธ ์์ฑ
django-admin startproject config .
3. 2 ์น์๋ฒ
์น ์๋ฒ ์์ํ๊ธฐ
python manage.py runserver
ํฌํธ ๋ณ๊ฒฝ
python manage.py 8080
python manage.py 0.0.0.0:8080
python manage.py 0:8000
(๊ทผ๋ฐ ๋๋ ์ ์๋๋ค)
3.3 ์ค๋ฌธ์กฐ์ฌ ์ฑ ๋ง๋ค๊ธฐ
์ฑ ์์ฑ
python manage.py startapp polls
3.4 ์ฒซ๋ฒ์งธ ๋ทฐ ๋ง๋ค๊ธฐ
polls/views.py
๋ทฐ๋ฅผ ๋ง๋ค๋ฉด ์ด ๋ทฐ๋ฅผ ํธ์ถํ๊ธฐ ์ํ URL์ด ์์ด์ผ ํ๋ค. URL ์ฐ๊ฒฐ์ ์ํด polls ํด๋์ urls.py ์์ฑ
polls/urls.py
path ํจ์๋ path(route, view, kwargs, name) ํํ๋ก ํธ์ถํ๋ค.
route : ์ฃผ์๋ฅผ ์๋ฏธ
view : 1์ ์ฃผ์๋ก ์ ๊ทผํ์ ๋ ํธ์ธํ ๋ทฐ
kwargs : ๋ทฐ์ ์ ๋ฌํ ๊ฐ
name : route์ ์ด๋ฆ์ ์๋ฏธ. ์ด ์ด๋ฆ์ ๊ฐ์ง๊ณ ์ํ๋ ๊ณณ์์ ์ฃผ์๋ฅผ ํธ์ถํ ์ ์๋ค.
์ด ๋, polls/urls.py
๋ ์ฑ์ ๋ผ์ฐํ
๋ง ๋ด๋นํ๋ฏ๋ก ํ๋ก์ ํธ์ ๋ฉ์ธ urls.py
์์ ์ฐ๊ฒฐ์ ํด์ค์ผ ์ ์ ์๋ํ๋ค.
config/urls.py
include๋ ๋ค๋ฅธ urls.py ํ์ผ์ ์ฐธ์กฐํ ์ ์๋๋ก ํด์ค๋ค.
3.5 ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ง๋ค๊ธฐ
config/settings.py
์ 76๋ฒ์งธ ์ค์๋ ๋ฐ์ดํฐ ๋ฒ ์ด์ค ์ค์ ์ด ์๋ค.
ENGINE : ์ด๋ค ์ข ๋ฅ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ ์ง ์ค์
๊ธฐ๋ณธ์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ 4๊ฐ์ง๋ฅผ ์ฌ์ฉํ ์ ์๋ค
django.db.backends.sqlite3
django.db.backends.postgresql
django.db.backends.mysql
django.db.backends.oracle
๋ฐ์ดํฐ๋ฒ ์ด์ค ์ด๊ธฐํ
python manage.py migrate
3.6 ๋ชจ๋ธ ๋ง๋ค๊ธฐ
๋ชจ๋ธ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ตฌ์กฐ๋์ด๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ด๋ค ํ ์ด๋ธ์ ๋ง๋ค๊ณ ์ด๋ค ์ปฌ๋ผ์ ๊ฐ๊ฒ ํ ์ง ๊ฒฐ์ ํ๋ฉฐ ์ปฌ๋ผ์ ์ ์ฝ ์กฐ๊ฑด๊น์ง๋ ๋ชจ๋ธ์์ ๊ฒฐ์ ํ๋ค.
polls/models.py
์ฅ๊ณ ์ ๋ชจ๋ธ์ models.Model์ ์์๋ฐ์ ๋ง๋๋๋ฐ, ์ด ๋ถ๋ชจ ํด๋์ค๊ฐ ์ค์ ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ORM์ ์ด์ฉํด ๋์ํ๋ ๊ธฐ๋ฅ๋ค์ ๊ฐ์ง๊ณ ์๋ค.
๊ฐ ํด๋์ค ๋ณ์๋ค์ ํ๋ ๊ฐ์ ๊ฐ์ง๋ฉฐ ์ด ํ๋๋ ์๋ฃํ๊ณผ ๊ฐ๋ค.
ForeignKey๋ ๋ค๋ฅธ ๋ชจ๋ธ๊ณผ์ ๊ด๊ณ๋ฅผ ๋ง๋ค๊ธฐ ์ํด์ ์ฌ์ฉํ๋ค. Choice ๋ชจ๋ธ์ด ForeignKey๋ก Question ๋ชจ๋ธ์ ๊ฐ๋๋ค๋ ๊ฒ์ Choice ๋ชจ๋ธ์ด Question์ ์์๋๋ค๋ ๊ฒ์ ์๋ฏธํ๋ค.
๋ชจ๋ธ์ ์์ฑํ๋ฉด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฉํด์ผ ํ๋ค. ์ด ๋ ์ฌ์ฉํ๋ ๋ช ๋ น์ด๋
migrate
์ด๋ค. ๋ํ, ์ด ๋ช ๋ น์ ์ฌ์ฉํ๋ ค๋ฉด polls ์ฑ์ด ํ์ฌ ํ๋ก์ ํธ์ ์ค์น๋์ด ์๋ค๊ณconfig/settings.py
์ ๋ช ์ํด์ค์ผ ํ๋ค.
config/settings.py
polls.apps.PollsConfig
๋ polls ์ฑ ํด๋์ apps.py ํ์ผ์ ์๋ PollsConfig ํด๋์ค๋ฅผ ์๋ฏธํ๋ค. ์งง๊ฒ ์ฐ๋ ค๋ฉด polls ๋ผ๊ณ ๋ง ์ ๋ ฅํด๋ ๋๋ค.
๋ฐ์ดํฐ ๋ฒ ์ด์ค ์ ์ฉ
python manage.py makemigrations polls
๋ช ๋ น์ ์คํํ๋ฉด ์ฑ์ ๋ณ๊ฒฝ์ฌํญ์ ํ์ ํด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฉํ ๋ด์ฉ์ ๋ง๋ค์ด ๋ธ๋ค. ์ด ๋ด์ฉ์ด
polls/migrations/0001_initial.py
ํ์ผ์ ๊ธฐ๋ก๋์ด ์๋ค.
SQL ๊ตฌ๋ฌธ ํ์ธ
python manage.py sqlmigrate polls 0001
์ด๋ฅผ ํตํด SQL์ ์คํํ๊ฑฐ๋ ๋ฌธ์ ๊ฐ ์๋ ์ฟผ๋ฆฌ๋ฅผ ํ๋จํ ์ ์๋ค.
๊ทธ๋ฌ๋ ์ฅ๊ณ ๋ฅผ ์ฌ์ฉํ๋ฉด ์ฟผ๋ฆฌ๋ฌธ์ ๋ชฐ๋ผ๋ ORM์ ํตํด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๊ทผํ ์ ์๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฐ์
python manage.py migrate polls 0001
์ด ๋ช ๋ น์ ํตํด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ณ๊ฒฝ์ฌํญ์ ๋ฐ์ํ์ฌ ํ ์ด๋ธ์ ์์ฑํ๊ณ ์ด๊ธฐํ ํ ์ ์๋ค.
3.7 ๋ชจ๋ธ์ ํจ์ ์ถ๊ฐํ๊ธฐ
Question ๋ชจ๋ธ๊ณผ Choice ๋ชจ๋ธ์ __str__
๋ฉ์๋๋ฅผ ์ถ๊ฐํ๋ค.
polls/models.py
๋ชจ๋ธ์ ์์ฑํ ํ์ ๋จ์ ๋ฉ์๋ ๋ณ๊ฒฝ์ migrate๋ฅผ ํ ํ์๊ฐ ์๋ค.
3.8 ๊ด๋ฆฌ์ ํ์ด์ง ํ์ธ
๊ด๋ฆฌ์ ํ์ด์ง์ ์ ๊ทผํ๊ธฐ ์ํด์๋ ๊ด๋ฆฌ์ ๊ณ์ ์ด ํ์ํ๋ค.
python manage.py createsuperuser
๊ด๋ฆฌ์ ํ์ด์ง์์ Question ๋ชจ๋ธ์ ๊ด๋ฆฌํ๋ ค๋ฉด ์ด ๋ชจ๋ธ์ ๋ฑ๋กํด์ผ ํ๋ค. admin.py
ํ์ผ์์ ๋ค์ ์ฝ๋๋ฅผ ์
๋ ฅํ๋ค.
3.9 ์ฌ๋ฌ ๊ฐ์ง ๋ทฐ ์ถ๊ฐ
ํํ ์ฑ์ ๋ฉ์ธ ํ์ด์ง ์ดํ ์ฌ๋ฌ ๊ฐ์ง ๋ทฐ๋ฅผ ์ถ๊ฐํ๋ค
ํฌํ ๋ชฉ๋ก
ํฌํ ์์ธ
ํฌํ ๊ธฐ๋ฅ
ํฌํ ๊ฒฐ๊ณผ
views.py
polls/urls.py
3๊ฐ์ ๋ทฐ๋ฅผ ๋ง๋ค๊ณ URL์ ์ฐ๊ฒฐํ๋ค. index๋ทฐ์ ๋ค๋ฅธ ์ ์ ๊ฐ URL์ ์๋ ํ์ด๊ดํธ๋ ๋ณ์๋ฅผ ์๋ฏธํ๋ฉฐ ์ด ๋ถ๋ถ์ ํด๋นํ๋ ๊ฐ์ ๋ทฐ์ ์ธ์๋ก ์ ๋ฌํ๋ค.
polls/views.py
๊ธฐ๋ฅ์ด ์๋ ๋ทฐ๋ฅผ ๋ง๋ค์์ง๋ง MTV ํจํด์ ๋ฐ๋ฅด์ง ์์ ํํ์ด๋ค. ํ ํ๋ฆฟ์ ๋ง๋ค์ด ํ์ด์ฌ ์ฝ๋์ HTML ์ฝ๋๋ฅผ ๋ถ๋ฆฌํ๋ค.
index.html
polls/views.py
loader๋ฅผ ์ด์ฉํด index.html์ ๋ถ๋ฌ์ค๊ณ ๋ฏธ๋ฆฌ ๋ง๋ค์ด ๋์ context ๋ณ์๋ฅผ ์ด์ฉํด ์ ๋ฌํ๋ค. ํ์ง๋ง ์ด๋ฐ ์ ์ฐจ๊ฐ ์ฝ๊ฐ ๋ถํธํ๊ธฐ ๋๋ฌธ์ ์ฅ๊ณ ์์๋ render๋ผ๋ ๋จ์ถํจ์๋ฅผ ์ ๊ณตํ๋ค.
polls/views.py
render ๋ฉ์๋๋ request์ ํ ํ๋ฆฟ ์ด๋ฆ, ์ฌ์ ํ ๊ฐ์ฒด๋ฅผ ์ธ์๋ก ๋ฐ๋๋ค. ์ฌ์ ํ ๊ฐ์ฒด๋ ํ ํ๋ฆฟ์์ ์ฌ์ฉํ ๋ณ์๋ฅผ ์๋ฏธ.
ํ ํ๋ฆฟ์ด ๋ฐ์๋ ๋ฉ์ธ ํ๋ฉด
Last updated
Was this helpful?