장고(Django) 결과(result) 조회 페이지
투표한 결과를 조회하는 화면 만들기
result.html 템플릿에서 어떤 question의 투표 결과를 조회하는 화면을 만들겠습니다.
polls/views.py
뷰에서 result 메서드를 작성합니다.
polls/urls.py
result.html 템플릿의 path는 question의 id/result 가 URL로 입력시 views의 result로 연결하고 이러한 URL의 별칭은 result
result.html
result 템플릿을 위와 같이 작성
그런데 우리는 투표를 완료했을 때 Question의 목록들이 있는 index로 보대던 기존의 reverse대신 투표 직후 바로 득표 결과를 보여주는 result 페이지로 보내고 싶습니다. 그러기 위해 뷰의 vote 메서드를 수정하겠습니다.
polls/view.py
HttpResponseRedirect의 reverse의 인자를 polls:index에서 polls:result로 네임스페이스:URL별칭을 준 것은 이해하기 쉽지만 블록 부분은 설명이 필요해 보입니다.
urls.py를 같이 살펴보면 쉽게 이해할 수 있습니다.
기존의 코드에서 index 페이지로 리다이렉트를 할 때는 별도의 인자가 필요 없었습니다.
하지만 result로 리다이렉트를 할 때는 question_id 인자가 필요합니다. 그래서 reverse에서 전달하는 방법은 args = (question_id,)입니다. 또한 여러개의 인자가 갈 수 있으므로 여분의 콤마(extra comma)를 붙여 주는 규칙이 있으니 유의해주세요.
그리고 브라우저에서 투표를 진행해보면
개발자 도구의 네트워크(Network)에서 vote시 302 스테이터스 코드(status code)가 뜨는데 이는 우리가 HttpResponseRedirect에서 reverse로 result 페이지로 보냈기 때문입니다.