이 글은 [파이썬 웹 프로그래밍](저자 김석훈, 출판사 한빛미디어) 교재를 보고 공부하며 정리한 글임.
3.7 애플리케이션 개발하기 - View 및 Template 코딩
만들기로 했던 polls라는 애플리케이션에는 3개 페이지가 필요했다.3개의 페이지가 필요하므로 3개의 템플릿 파일이 필요하고 URL과 뷰는 4개씩 필요하다고 판단하고 설계한다. ->URL과 뷰는 1:1로 매핑(URLconf 라고 함. urls.py에 작성)
코딩 순서
- URLconf 코딩
- 뷰/템플릿 코딩
3.7.1 URLconf 코딩
Admin 사이트가지해서 URL과 뷰가 5개 필요
path() 함수
route : URL 패턴 표현 문자열(URL 스트링) 필수
view : URL 스트링이 매칭되면 호출되는 뷰함수 필수
kwargs : 추가적인 인자를 뷰 함수에 전달할때
name : URL 패턴별로 이름 붙여주기
그런데 이렇게 urls.py 하나에 다 작성할 수도 있고
mysite/urls.py 와 polls/urls.py에 작성할 수도 있음 -> 이 방법이 더 좋음
app_name 변수로 이름 공간 지정 -> polls:detail 과 다른애플리케이션:detail 이렇게 표기해서 구분
3.7.2 뷰함수 index() 및 템플릿 작성
뷰함수랑 템블릿함수는 보통 같이 작업함.
UI 화면 떠올리며 템플릿 먼저 코딩하는게 더 좋음
index.html 파일에 UI를 설계해보자
{% %} 이건 템플릿 문법임.
question_text 와 (URL연결할때 필요한) question.id 정보가 들어있는 Question 객체를
뷰 함수에서 -> 템플릿으로 넘겨줌
이걸 index() 뷰 함수에 코딩
애플리케이션 개수가 늘어나고 템플릿파일도 많아지면
다른 애플리케이션인데 템플릿 이름이 같은 경우가 생김.
이럴때 대비해서 templates 하위에다가 애플리케이션 이름으로 디렉토리만들고 그 안에다가 템플릿파일 만들기!
3.7.3 뷰 함수 detail() 및 폼 템플릿 작성
detail.html 은 세가지 질문중 하나의 답변을 입력 받는 (객관식) 폼 화면
템플릿 파일을 먼저 코딩.
템플릿 작성했으니 이 템플릿 사용하는 detail() 뷰 함수 작성
index.html 화면에서 질문하나를 선택하면 /polls/1 같은 URL 넘어오는 것임
views.py 파일 보자
3.7.4 뷰 함수 vote 및 리다이렉션 작성
vote() 뷰 함수를 작성
3.7.5 뷰 함수 results() 및 템플릿 작성
results () 뷰 함수 추가
뷰 함수 만들었으니 템플릿 코딩
각 질문마다 투표 카운트 보여주는 화면
3.7.6 지금까지 작업 확인하기
chapter 03 에서 만든 애플리케이션을 한번 전체적으로 복습해봤다.
복습하다가 HttpResponseRedirect랑 render 의 차이점이 궁금해서 정리해봤다.
https://dawonny.tistory.com/5?category=991193