모든 흐름을 보기 위해서, 간단한 로직 혹은 상속이 필요하지 않는 로직일 경우 함수형 뷰가 간편하다.
상속과 같은 것을 이용할 수 있기 때문에 만들어진 코드를 상속해서 사용한다면 작성해야하는 코드가 줄어든다
함수형 뷰로 작성
URL에서 보내진 요청을 처리하는 index 함수 작성
HTTP 요청을 받고, HTTP 응답을 반환
위의 코드처럼, HTML 코드를 View에 작성하는 것보다 HTML 파일을 따로 만들어, 화면에 보여줄 코드는 따로 정리하는 게 좋을 것 같음.
Template
: Django에서의 Template은 데이터를 보여주는 로직을 작성하는 부분 (화면 상의 로직을 처리함)
뷰에서 템플릿 파일을 반환하기 위해 사용하는 함수는?
render (from django.shortcuts import render)
render 란? : 주어진 template을 context와 결합해서 렌더링을 거친 후 완성된 html을 HttpResponse로 돌려주는 함수
render( reqeust, template_name, context ) 일단 이것만 기억하기!
index.html
html <body> 태그에 내용을 작성한다.
view 파일이 있는 앱 내에 "templates" 폴더를 만들고, html파일만 해당 폴더 안에서 관리한다. 이때, templates 폴더(복수로!) 안에 "앱 이름"의 폴더를 또 생성한 후, html파일을 관리한다. (햄버거 구조)
ex. articles/templates/articles/index.html
주의할 점 : 장고가 template파일을 찾기 위해선 폴더명이 정확히 "templates"로 작성해야 됨. ( Django는 setting.py의 TEMPLATES의 APP_DIRS를 보고 파일을 찾) Tip) VScode에서는 !를 입력하고 Tab 버튼을 누르면 기본적인 HTML파일 구조가 생성되는 자동완성 지원
Django Template System
1. Django Template Language (DTL)
: Django Template에서 사용하는 문법
DTL 문법
변수, Variable
{{ variable }}
view의 context로 넘긴 데이터를 접근할 수 있음
" . " 을 사용하여 변수의 속성값에 접근 가능
render()의 세번째 인자인 context에서, dict형태로 넘겨진 데이터 중 key 값이 template에서 사용 가능한 변수가 됨