Django ํํ ๋ฆฌ์ผ (1) - ํ๋ก์ ํธ ์์ฑ ๋ฐ View ์์ฑ
โ ๊ณต์๋ฌธ์
https://docs.djangoproject.com/en/4.1/
โฌ๏ธ Django ์ค์น ์ ์ด๋ผ๋ฉด ์๋ ๊ธ์ ์ฐธ๊ณ ํด๋ณด์ธ์!
๋งฅ(Mac)์์ Django ๊ฐ๋ฐํ๊ฒฝ ๊ตฌ์ถ ๋ฐ ์ค์นํ๊ธฐ
๊ฐ๋ฐํ๊ฒฝ macbook pro (2019) macOS Monterey 12.6.2 python 3.9.6 django 4.1.6 python3 ์ค์น 1. ์ค์น ์ฌ๋ถ ํ์ธ python3 --version 2. ์ค์น๊ฐ ๋์ด์์ง ์๋ค๋ฉด ์ค์น python ๊ณต์ ๋ค์ด๋ก๋ (3.9.6์ผ๋ก ์ค์นํจ) https://www.python.org/do
myminju.tistory.com
๊ฐ๋ฐํ๊ฒฝ
- macbook pro (2019)
- macOS Monterey 12.6.2
- python 3.9.6
- django 4.1.6
Writing your first Django app
์ฅ๊ณ ํ๋ก์ ํธ ์์ฑ
django-admin startproject mysite
ํ๋ก์ ํธ ์์ฑ ํ ํ์ผ ๋ชฉ๋ก
mysite/
manage.py
mysite/
__init__.py
settings.py
urls.py
asgi.py
wsgi.py
- mysite/ : ํ๋ก์ ํธ๋ฅผ ๋ด๋ ์ปจํ
์ด๋ ํด๋, ๋ฃจํธ ๋๋ ํ ๋ฆฌ์ด๋ฉฐ ์ด๋ฆ ๋ณ๊ฒฝ ๊ฐ๋ฅ
- manage.py : ์ฌ๋ฌ๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ์ฅ๊ณ ํ๋ก์ ํธ์ ์ํธ์์ฉ ํ๋ ์ปค๋งจ๋๋ผ์ธ ์ ํธ๋ฆฌํฐ - manage.py์ ๋ํ ๋ํ ์ผ
- ๋ด๋ถ mysite/ : ํ๋ก์ ํธ๋ฅผ ์ํ ์ค์ ํ์ด์ฌ ํจํค์ง๋ค์ด ์ ์ฅ๋จ
- __init__.py : ํ์ด์ฌ์๊ฒ ์ด ๋๋ ํ ๋ฆฌ๋ฅผ ํ์ด์ฌ ํจํค์ง๋ก ์ธ์ํ๋๋ก ํ๋ ๋น์ด์๋ ํ์ผ
- settings.py : ํ๋ก์ ํธ์ setting๊ณผ configuration - Django settings
- ursl.py : ํ๋ก์ ํธ์ url ์ ์ธ
- asgi.py : ASGI ํธํ ์น์ ๋ฐฐํฌํ๊ธฐ ์ํ ์ํธ๋ฆฌ ํฌ์ธํธ
- wsgi.py : WSGI ํธํ ์น์ ๋ฐฐํฌํ๊ธฐ ์ํ ์ํธ๋ฆฌ ํฌ์ธํธ
๊ฐ๋ฐ ์๋ฒ ์คํ
python manage.py runserver
- ์ธ์ runserver๋ฅผ ํด์ผํ ๊น?
์๋ ๋ณ๊ฒฝ ๊ธฐ๋ฅ์ผ๋ก ์ธํด ๊ฐ๋ฐ ์๋ฒ๋ ์์ฒญ์ด ๋ค์ด์ฌ ๋๋ง๋ค ์๋์ผ๋ก ํ์ด์ฌ ์ฝ๋๋ฅผ ๋ค์ ๋ถ๋ฌ์จ๋ค.
์ฆ, ์ฝ๋ ๋ณ๊ฒฝ ์ฌํญ์ ์ ์ฉํ๊ธฐ ์ํด์๋ ๊ตณ์ด ์๋ฒ๋ฅผ ๋ค์ ์์ํ์ง ์์๋ ๋๋ค.
๊ทธ๋ฌ๋, ํ์ผ ์ถ๊ฐ ๋ฑ์ ์์ ์ ๊ฐ๋ฐ์๋ฒ๊ฐ ์๋์ผ๋ก ์ธ์ํ์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ ์๋ฒ๋ฅผ ๋ค์ ์์ํด์ผํ๋ค.
์ค๋ฌธ์กฐ์ฌ ์ฑ ์์ฑ
python manage.py startapp polls
๐ก ํ๋ก์ ํธ vs ์ฑ
- ์ฑ์ ๋ธ๋ก๊ทธ ์์คํ , ๊ณต๊ณต ๊ธฐ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋๋ ์๊ท๋ชจ ํฌํ ์ฑ๊ณผ ๊ฐ์ ์์ ์ ์ํํ๋ ์น ์ ํ๋ฆฌ์ผ์ด์
- ํ๋ก์ ํธ๋ ํน์ ์น ์ฌ์ดํธ์ ๋ํ ๊ตฌ์ฑ ๋ฐ ์ฑ์ ๋ชจ์
- ํ๋ก์ ํธ๋ ์ฌ๋ฌ ์ฑ์ ํฌํจํ ์ ์๊ณ , ์ฑ์ ์ฌ๋ฌ ํ๋ก์ ํธ์ ์์ ์ ์๋ค.
์ฑ ์์ฑ ํ ํ์ผ ๋ชฉ๋ก
polls/
__init__.py
admin.py
apps.py
migrations/
__init__.py
models.py
tests.py
views.py
์ฒซ๋ฒ์งธ ๋ทฐ ๋์ฐ๊ธฐ
1. polls/views.py์ ์๋ ์ฝ๋ ์ถ๊ฐ
# polls/views.py
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello, world. You're at the polls index.")
2. polls/urls.py์ URL ๋งคํ
๋ทฐ๋ฅผ ํธ์ถํ๋ ค๋ฉด ์ด์ ์ฐ๊ฒฐ๋ URL์ด ์์ด์ผ ํ๊ณ , ์ด๋ฅผ ์ํด URLConf๊ฐ ์ฌ์ฉ๋๋ค.
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
]
3. mysite/urls.py์์ ๋ชจ๋ ๊ฐ๋ฆฌํค๊ธฐ
์ต์์ URLConf์์ polls.urls ๋ชจ๋์ ๋ฐ๋ผ๋ณด๊ฒ ์ค์ ํ๋ค.
from django.contrib import admin
from django.urls import include, path
urlpatterns = [
path('polls/', include('polls.urls')),
path('admin/', admin.site.urls),
]
๐ก include()
๋ค๋ฅธ URLConf๋ฅผ ์ฐธ์กฐํ๋๋ก ํจ
URL์ด ์ผ์นํ๋ ๋ถ๋ถ๊น์ง ์๋ผ๋ด๊ณ ๋จ์ ๋ถ๋ถ์ included URLConf๋ก ๋ณด๋
๐ก path()
ํ์ ํ๋ผ๋ฏธํฐ : route, view
์ ํ ํ๋ผ๋ฏธํฐ : kwargs, name
4. http://localhost:8000/polls/ ์ ์ ์ํ์ฌ ์ฐ๊ฒฐ ํ์ธํ๊ธฐ
index ๋ทฐ๊ฐ URLConf์ ์ฐ๊ฒฐ๋์ด ์ ๋์ค๋ ๊ฒ์ ํ์ธํ ์ ์๋ค!