어떤 웹 프레임워크를 사용하건 처음에 고려해야 될 것은 라우팅
이다.
라우팅이 모든 과정의 반이라고 해도 과언이 아니라고 한다.
라우트(Route)는 경로라는 뜻이며 라우팅은 각각의 경로를 어떻게 처리할 지 결정해 주는 것을 말한다.
project
안에 있는 urls.py
에서 가장 큰 틀의 라우팅을 진행해 준다.
그 다음 적당한 app
으로 위임하고 그 안에 view
안에 있는 특정 함수
로 위임해준다.
세가지 경우에 대한 라우팅을 시도하려고 한다.
1️⃣ 사용자가 home
경로로 접속했을 때
2️⃣ create/
경로로 접속했을 때
3️⃣ read/1/
경로로 접속했을 때
라우팅을 할 때 중요한 것은 규칙
을 지키는 것이다.
우리는 urlpatterns
에 있는 리스트를 정의해 줘야한다.
그리고 그 리스트 안에는 라우팅과 관련된 정보가 적혀 있어야 한다.
admin은 django가 가지고 있는 관리자 화면으로 이동하기 위한 라우팅 설정이지만 이번 수업에선 admin은 보지 않는다.
사용자가 어떠한 경로도 기입을 하지 않았을 때 즉 HOME에 접속하였을 때를 가정해 보자.
include
매서드를 사용하기 위해 import 해주고
home으로 접속하기에 path
에는 빈칸 ''을 넣어준다.
앱으로 위임하기 위해 그 다음 인자로 include함수
를 사용한다.
include 안에는 이동할 앱 이름 + .urls을 적어준다.
이 말은 즉 myapp 안에 있는 urls.py를 사용해라
라는 말이다.
하지만 myapp에는 urls.py가 없는데?
그래서 그 다음 스텝은 myproject안에 있는 urls.py를 myapp에 복사 붙여넣기 하면 된다.
그 결과 다음과 같은 파일 구성이 된다.
이제 새로 만들어진 url.py를 설정해보자.
사용자가 사용하는 주소 뒤에 아무것도 안쳤을 경우 즉, http://127.0.0.1:8000/
로 접속했때를 가정해보자.
myproject와 마찬가지로 urlspatterns 리스트 안에 path를 수정하는 것은 마찬가지이다. 하지만 path 뒤쪽에 오는 인자 값이 views.py로 보내야 된다는 것이 다르다.
위 코드에선 views.py 안에 index를 사용한다
고 되어 있는데 views.py안에서는 어떤 일이 일어나고 있는 걸까?
처음 views.py 파일을 열면 아무것도 없다.
여기서 우리가 함수를 만들어 myapp/urls.py에 리턴할 것들을 만들어 주는 것이 우리가 할 일이다.
일단 index라는 함수를 만든 뒤 파라미터 값으로 request를 넣어준다. 아무거나 넣어줘도 되지만 관습적으로 request를 사용한다. Client에게 리턴 값으로 HTTP이용해서 응답을 하겠다는 의미로 HttpResponse를 사용한다.
그리고 myapp에 urls.py에 들어가 해당 path에 두번째 인자로 views.py 안에 있는 index함수를 쓰겠다고 선언해준다.
path('read/<id>/', views.read)
myapp에 urls.py에 <id>
가 나오는데 이건 언제나 바뀔 수 있는 값이 들어온다는 뜻이다. 그리고 views.py에 해당하는 함수에 두 번째 인자로 id를 적어주면 된다.