투표 상세 템플릿(《polls/detail.html》)을 수정하여, 템플릿에 HTML <form> 요소를 포함

라디오 버튼의 value는 연관된 질문 선택 항목의 ID.
라디오 버튼 중 하나를 선택하면 choice=#를 보낸다. #은 선택한 항목의 id라고 한다.
폼의 동작을 {% url 'https:https' question.id %}(으)로 설정하고 method="post"로 설정합니다. method="post"를 사용하는 것은 매우 중요합니다(method="get"과 달리). 이 양식을 제출하면 데이터 서버측을 변경할 수 있기 때문입니다. 데이터 서버측을 변경하는 양식을 작성할 때마다 method="post"를 사용하십시오. 이 팁은 Django에만 국한된 것이 아닙니다. 일반적으로 웹 개발의 모범 사례입니다.
내부 URL을 대상으로 하는 모든 POST 형식은 {%csrf_token %} 템플릿 태그를 사용해야 함.


이 부분 추가함.
- request.POST 는 키로 전송된 자료에 접근할 수 있도록 해주는 사전과 같은 객체. 이 경우, request.POST['choice'] 는 선택된 설문의 ID를 문자열로 반환합니다. request.POST 의 값은 항상 문자열.
- 위의 코드는 KeyError 를 체크하고, choice가 주어지지 않은 경우에는 에러 메시지와 함께 설문조사 폼을 다시보여줍니다.
- 설문지의 수가 증가한 이후에, 코드는 일반 HttpResponse 가 아닌 HttpResponseRedirect 를 반환하고, HttpResponseRedirect 는 하나의 인수를 받습니다: 그 인수는 사용자가 재전송될 URL 입니다.
- 우리는 이 예제에서 HttpResponseRedirect 생성자 안에서 reverse() 함수를 사용하고 있습니다. 이 함수는 뷰 함수에서 URL을 하드코딩하지 않도록 도와줍니다. 제어를 전달하기 원하는 뷰의 이름을, URL패턴의 변수부분을 조합해서 해당 뷰를 가리킵니다. 여기서 우리는 튜토리얼 3장에서 설정했던 URLconf를 사용하였으며, 이 reverse() 호출은 아래와 같은 문자열을 반환할 것입니다.
'/polls/3/results/'
여기서 3 은 question.id 값
설문조사가 끝나고 난뒤에는 vote() 뷰는 설문조사 결과 페이지로 리다이렉트한다. 그 뷰를 작성해야한다.

polls/results.html 템플릿을 만든다.

/polls/1/ 페이지로 가서, 투표를 해본다.


얼마나 투표했는지 알 수 있다.
성공 축축!!!

제너릭 뷰 사용하기: 적은 코드가 더 좋습니다.
- URLconf를 변환하십시오.
- 불필요한 오래된보기 중 일부를 삭제하십시오.
- Django의 제너릭 뷰를 기반으로 새로운 뷰를 도입하십시오.

뷰 수정하기
index, detail, results뷰를 제거하고 장고의 일반적인 뷰를 대신 사용하겠습니다. 그렇게하려면 polls/views.py 파일을 열고 다음과 같이 변경하십시오:

다음과 같은 index뷰들 detail 뷰들, results뷰들을 제거하고 바꿔준다.
다음과 같이

후에 들어가면 전과 같이 뜨는 것을 볼 수 있었다.
4 끝!!
python3 manage.py runserver로 서버 생성하는거 잊지말기!
Ctrl + C쓰지말기 서버 만드는 그 공간에서 나와져버리니까
'Computer Science > Web' 카테고리의 다른 글
HTML, CSS, Javascript 기초 (0) | 2021.07.13 |
---|---|
[Django] 장고 튜토리얼(5), 간단한 설문조사(Polls) 어플리케이션 (0) | 2021.05.29 |
[Django] 장고 튜토리얼(3), 간단한 설문조사(Polls) 어플리케이션 (0) | 2021.05.22 |
[Django] 장고 튜토리얼(2-2), 간단한 설문조사(Polls) 어플리케이션 (0) | 2021.05.20 |
[Django] 장고 튜토리얼(2-1), 간단한 설문조사(Polls) 어플리케이션 (0) | 2021.05.19 |