**본 포스팅은 유튜브 명준MJ님의 python django tutorial 강의를 참고하여 작성하였습니다.**
https://docs.djangoproject.com/ko/4.0/intro/tutorial03/
뷰
view 는 장고 웹의 로직을 담당함.
웹에서 일어나는 데이터 저장이라든지 파일 다운로드라든지
이러한 일들을 처리하기 위해서 코드를 작성함.
view는 일반적으로 특정한 기능을 제공하고 특정한 템플릿을 가진
Django 애플리케이션에 있는 웹 페이지의 “type”임.
Django에서는 웹 페이지와 기타 콘텐츠가 view로 전달됨.
URL 패턴은 URL의 일반적인 형식. (예: /newsarchive/<year>/<month>/)
URL로부터 뷰를 얻기 위해, Django는 ‘URLconfs’라는 것을 사용.
URLconf는 URL 패턴을 뷰에 연결.
뷰 추가하기
polls/views.py 에 뷰를 추가
-> client 로 부터 여러가지 정보가 담겨있는 request 를 받고,
데이터 추출/데이터 저장/ 파일 다운로드 등을 한 후 다시 Response 를 해줌.
path() 호출을 추가하여 이러한 새로운 뷰를 polls.urls 모듈로 연결
polls/urls.py
만약 client 가 /polls/5/ 라고 호출(question id로 5를 전달)하게 되면
views.detail (상세 페이지) 뷰 호출함.
polls/views.py
해당 주소에서 detail 이 호출되어 line9 가 실행되어 client에게 전달됨. (해당 문자열이 화면에 보임)
뷰가 실제로 뭔가를 하도록 만들기
각 뷰는 두 가지 중 하나를 하도록 되어 있음.
요청된 페이지의 내용이 담긴 HttpResponse 객체를 반환하거나,
혹은 Http404 같은 예외를 발생하게 해야함.
뷰에서 페이지의 디자인이 하드코딩 되어 있으면 수정할 때 python 코드를 편집해야함.
뷰에서 사용할 수 있는 템플릿을 작성하여 python 코드로부터 디자인을 분리해보자.
polls/templates/polls/index.html
templates 디렉토리 위치
: polls 안에 templates 디렉토리를 만들어주고
templates 디렉토리 내에 앱 이름으로 디렉토리를 또 하나 만들어 html 파일 관리.
-> 이런 구분 없이 그냥 templates 디렉토리 안에 바로 html 파일을 만들면
장고는 다른 앱의 템플릿과 구분할 수 없기 때문.
polls/views.py
latest_question_list 에 질문 여러개를 가지고와서 context 안에 데이터를 밀어넣어주고
이 데이터를 템플릿을 활용하여 보여주게 됨.
render() 함수
코드 양을 줄일 수 있음. (shortcuts)
polls/views.py
404 에러 일으키기
polls/views.py
템플릿 시스템 사용하기
polls/templates/polls/detail.html
What's new? 를 외래 키로 가지고 있는 모든 Choice 를 가지고 옴.
리스트에 하나씩 뿌려줌.
URL 하드코딩 제거하고 이름공간 정하기
URL 은 하드코딩 하지말고 이름을 써줘서 수정 시 영향 범위를 줄이자.
polls/templates/polls/index.html
'Study > Django' 카테고리의 다른 글
[장고 튜토리얼] #5~6. test, css, static file (0) | 2022.05.08 |
---|---|
[장고 튜토리얼] #4. form, generic view (2) | 2022.05.03 |
[장고 튜토리얼] #2. git, database, admin (0) | 2022.04.26 |
[장고 튜토리얼] #0~1. quick-install, Django app (4) | 2022.04.26 |
댓글