django-admin startproject 프로젝트명
나는 튜토리얼 그대로 프로젝트 명을 mysite로 지정함
파일 구조
(튜토리얼과 조금 차이 존재)
mysite/
manage.py
mysite/
__init__.py
settings.py
urls.py
wsgi.py
manage.py
DJANGO_SETTINGS_MODULE
환경 변수의 설정을 통해 프로젝트의 settings.py
파일을 가리키게 할 수 있다.mysite/__init__.py
mysite/settings.py
mysite/urls.py
mysite/wsgi.py
python manage.py runserver
runserver의 자동 변경 기능으로 인해 개발 서버는 요청이 들어올 때마다 자동으로 파이썬 코드를 다시 불러온다. 즉, 코드의 변경사항을 반영하기 위해 굳이 서버를 재기동하지 않아도 된다.
그러나, 파일을 추가하는 등의 동작은 개발서버가 자동으로 인식하지 못하기 때문에 서버를 재기동 해야한다.
python manage.py startapp polls
polls/
__init__.py
admin.py
apps.py
migrations/
__init__.py
models.py
tests.py
views.py
# polls/views.py
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello, world. You're at the polls index.")
뷰를 호출하려면 이와 연결된 URL이 있어야 하는데, 이를 위해 URLconf가 사용된다.
polls 디렉토리에서 URLconf를 생성하려면, urls.py라는 파일을 생성해야 한다.
# polls/urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index')
]
다음 단계는, 최상위 URLconf에서 polls.urls 모듈을 바라보게 설정한다.
mysite/urls.py 파일을 다음과 같이 수정.
# mysite/urls.py
from django.contrib import admin
from django.urls import include, path
urlpatterns = [
path('admin/', admin.site.urls),
path('polls/', include('polls.urls'))
]
include()
include()
함수는 다른 URLconf들을 참조할 수 있도록 도와준다. Django가 include()
를 만나게 되면 URL의 그 시점까지 일치하는 부분을 잘라내고, 남은 문자열 부분을 후속 처리를 위해 inlucde된 URLconf로 전달한다.
polls앱에 자체의 URLconf(polls/urls.py)가 존재하는 한 그 어떤 다른 root 경로에 연결하더라도 앱은 잘 동작할 것이다.
path()
path()
함수에는 2개의 필수 파라미터인 route와 view, 2개의 선택 파라미터인 kwargs, name 총 4개의 파라미터가 전달되었다.
이제 index 뷰가 URLconf에 연결되었다.