더 많은 view 쓰기
지난 포스팅에서 짧게 polls 앱에 필요한 views를 둘러보았습니다.
이제 몇개의 view 들을 polls/views.py 에 더 써줄겁니다. 추가될 view 들은 좀 다릅니다.
추가되는 view 들은 인수를 가집니다.
1 | from django.shortcuts import render |
새로 추가된 view 들을 URL과 연결해 줍니다
polls/urls.py 에 아래와 같이 각 view 들을 URL 과 연결해 줍니다 .
HttpResponse
참고로, HttpResponse
함수는, 단순히 괄호안에 들어간 값을 브라우저에 출력해 줍니다.
1 | from django.urls import path |
http://127.0.0.1:8000/polls/34 도 브라우저에서 실행 해서 한번 봅니다. 이렇게 하면, views 에 있는 detail() 메서드가 실행되고, URL에 포함되어 있는 어떤 ID 값을 인수로 받아서 화면에 결과값이 출력됩니다.
http://127.0.0.1:8000/polls/34/results
http://127.0.0.1:8000/polls/34/vote 도 실행 해 보세요.
HttpResponse 함수가 실행되고, 단순히 괄호안에 들어간 값을 브라우저에 출력해 줍니다.
누군가가 웹사이트에 있는 페이지를 요청 하면,
예를들어, http://127.0.0.1:8000/polls/34/
Django 는 RootURL 설정으로인해 mysite/urls.py 파이썬 모듈을 읽어 들입니다.
루트 URL 설정으로 경로가,
path('polls', include('polls.urls'))
로 설정되어 있기 때문에,polls/urls.py 에 있는 url 설정이 불러져서 작동합니다.
<int:question_id>
는 인자
polls/ 가 URL 경로에 매칭이되고, polls.urls 로 넘어가는데.
polls/34/ 라는 URL 경로에 들어가면, 34 가 <int:question_id>
와 매칭이 됩니다, 따라서 detail() 뷰를 호출할때. 이것을 인자로 넘겨줍니다.
URL 의 확장자는 붙여줄 필요는 없지만,
원한다면 붙여주어도 괜찮습니다.
1 | path('polls/latest.html', views.index), |
마치며..
아직도 좀 헷갈리는 부분이긴 한데.
url 을 통해서 요청을 받고, 그 요청을 view 에서 처리한다는 개념을 다시 복습하고 갑니다.
url 을 통해서 요청을 받을때, 그 요청에 인수까지 받아서 view 에 있는 함수에 전달해 줄수 있다.
이런식으로 개념을 잡고 넘어갑니다.