터칭 데이터

장고(Django) 결과(result) 조회 페이지 본문

장고 (Django)

장고(Django) 결과(result) 조회 페이지

터칭 데이터 2023. 11. 3. 22:35

 

 

 

투표한 결과를 조회하는 화면 만들기

 

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 페이지로 보냈기 때문입니다.