터칭 데이터
장고(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 페이지로 보냈기 때문입니다.
'장고 (Django)' 카테고리의 다른 글
장고(Django) 장고 쉘에서 Serializer 사용하기 (0) | 2023.11.04 |
---|---|
장고(Django) 시리얼라이저(Serilaizer) (0) | 2023.11.04 |
장고 (Django) 에러 방어하기 2 (0) | 2023.11.03 |
장고(Django) 에러 방어 (0) | 2023.11.03 |
장고(Django) 폼(Forms) (0) | 2023.11.03 |