Django - 1. Tutorial 따라하기
에서
$ django-admin startproject mysite
를 통해 프로젝트를 생성했고
$ python manage.py runserver
를 통해 개발서버를 시작했습니다.
이제, 설문조사 앱을 만드는 과정의 Tutorial을 따라해보겠습니다.
Django에서 작성하는 각 어플리케이션은 Python Package로 구성되어 있으며 이 Python Package는 특정 convention을 따릅니다.
앱을 생성하기 위해 manage.py가 존재하는 디렉토리에서 다음의 명령을 입력해 보겠습니다.
$ python manage.py startapp polls
그러면 polls
라는 다음과 같은 directory가 생성됩니다.
polls/
__init__.py
admin.py
apps.py
migrations/
__init__.py
models.py
tests.py
views.py
이 directory가 poll application의 집이라고 생각하면 됩니다.
view를 작성해보겠습니다.
polls/views.py
파일을 열어 다음과 같은 코드를 넣어주겠습니다.
#polls/views.py
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello, world. You're at the polls index.")
view를 호출하려면 이와 연결된 URL 이 있어야 하는데, 이를 위해 URLconf가 사용됩니다. polls 디렉토리에서 URLconf를 생성하기 위해 urls.py라는 파일을 생성하겠습니다.
여기서 URLconf란 urls.py
파일을 뜻합니다.
view 호출 -> 연결된 URL 필요
-> URLconf 필요 -> urls.py 생성
polls/urls.py
의 내용은 다음과 같습니다.
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
]
이제 최상위 URLconf(root URLconf)에서 polls.urls 모듈을 바라보게 설정합니다. mysite/mysite/urls.py
에서 django.urls.include를 import
하고, urlpatterns 리스트에 include() 함수를 다음과 같이 추가
합니다.
#mysite/mysite/urls.py
from django.contrib import admin
from django.urls import include, path
#django.urls.include를 import
urlpatterns = [
#urlpatterns 리스트에 include() 함수 추가
path('polls/', include('polls.urls')),
path('admin/', admin.site.urls),
]
참고
include() 함수는 다른 URLconf들을 referencing 하도록 도와줍니다. Django가 include()를 만나게 되면, 그 시점까지 URL의 일치하는 부분을 잘라내고, 후속 처리를 위해 남은 문자열 부분을 include 된 URLconf로 전달합니다.
include() 덕분에 URL을 쉽게 연결할 수 있습니다. polls 앱에 URLconf(polls/urls.py)가 있다면 어떤 다른 root 경로에 연결하더라도, 앱은 여전히 잘 동작할 것입니다.
이제 index 뷰가 URLconf에 연결되었습니다. 잘 작동하는지 확인하기 위해 다음 명령을 입력해보겠습니다.
$ python manage.py runserver
http://localhost:8000/polls/
로 이동하면 화면이 잘 나오는 것을 확인할 수 있습니다.
이 시점에서 path() 함수에 대해 살펴보겠습니다.
urlpatterns = [
path('polls/', include('polls.urls')),
path('admin/', admin.site.urls),
]
path()의 parameter는
필수 인자 route 와 view,
선택 인자 kwargs 와 name
모두 4개의 인수가 전달 되었습니다.
이 인수들이 무엇인지 살펴보겠습니다.
패턴들은 GET 이나 POST 의 매개 변수들, 혹은 도메인 이름을 검색하지 않습니다. 예를 들어, https://www.example.com/myapp/ 이 요청된 경우, URLconf 는 오직 myapp/ 부분만 바라 봅니다. https://www.example.com/myapp/?page=3, 같은 요청에도, URLconf 는 역시 myapp/ 부분만 신경씁니다.
view
Django 에서 일치하는 패턴을 찾으면 특정한 view 함수를 호출합니다.
이 view 함수는 HttpRequest 객체를 첫번째 인수로 하고, 경로로 부터 '캡처된' 값을 키워드 인수로 합니다.
kwargs
임의의 키워드 인수들은 목표한 view 에 dictionary로 전달됩니다. 그러나 이 튜토리얼에서는 사용하지 않을겁니다.
name
URL 에 이름을 지으면, 템플릿을 포함한 Django 어디에서나 명확하게 참조할 수 있습니다. 이 강력한 기능을 이용하여, 단 하나의 파일만 수정해도 project 내의 모든 URL 패턴을 바꿀 수 있도록 도와줍니다.