본문 바로가기
Study/Django

[장고 튜토리얼] #4. form, generic view

by 이지이즤 2022. 5. 3.

**본 포스팅은 유튜브 명준MJ님의 python django tutorial 강의를 참고하여 작성하였습니다.**

https://docs.djangoproject.com/ko/4.0/intro/tutorial04/

 

 

간단한 폼 쓰기

polls/templates/polls/detail.html

for문으로 list를 만들었었음.
이번에는 서버쪽으로 데이터를 보내기 위해 form 태그와 input 태그 사용.

사용자가 submit type 의 input 태그를 누르면
해당 URL('polls:vote') 로 데이터(value 값)가 전달되고,
해당 URL 에 걸려있는 views(views.vote) 에서 데이터를 처리함.

{% csrf_token %} 는 사이트간 위조요청 막기위해 모든 form 태그 안에 넣어줌.

polls/views.py

question_id 넘겨받고 question 조회.
question 에 대해서 외래키를 갖는 choice 들을 가져옴.
조회했을 때 데이터가 없으면 예외발생(except) -> detail 페이지로 응답.
데이터가 있는 경우(else)에는 표를 1 올려주고 저장.

설문을 하고난 뒤에는, vote() 뷰는 설문조사 결과 페이지로 리다이렉트
-> result URL에서 result 뷰를 호출 -> question 조회
-> result 템플릿이 결과페이지로 보여짐, question 데이터가 같이 넘어감


polls/templates/polls/results.html

* pluralize 키워드 : votes 가 단수인 경우에는 단수처리, 복수인 경우에는 복수처리

 

 

 

제너릭 뷰 사용하기: 간단해짐

(클래스 기반 뷰)

as_view() 함수를 호출하여 뷰를 호출함.

polls/urls.py

polls/views.py

댓글