FBV 와 CBV
FBV(Function Based View) : 함수에 기반을 둔 방법
CBV(Class Based View) : django 가 제공하는 클래스를 활용해 구현
views.py 에서 index() 함수를 만들어서 FBV로 구현을 했었다.
프로젝트 폴더에서 urls.py 에 path('blog/', include('blog.urls')), 를 작성하여
blog/urls.py 로 이동하고 views.py에 index() 함수를 실행하게 되고 blog/index.html로
화면을 나타내어 주는 작업을 하였는데 CBV 방식은 출력은 같은나 내용이 다르다.
그전에 FBV 방식을 다시 정리하면 index() 함수에서 models.py에 class post를 불러오고
요청을 받으면 blog/index.html 을 불러온다 (dictionary 형태로)
index()함수에서 post.objects.all() 함수로 가져온 post 레코드를 post dictionary로 명명했다.
template 파일에서 for문으로 posts에 담긴 post 레코드를 하나씩 나열하였다.
여러 포스트들을 나열할때는 ListView 클래스를 활용한다.
사진에서 처럼
from django.views.generic import ListView
명령어로 ListView를 import 시켜주고
django가 제공하는 ListView는 모델명 뒤에 '_list'가 붙은 html 파일을 기본 template로 사용하도록 설정되어 있다. post 모델을 사용하려면 post_list.html 이 필요
2번 방식을 선택하여 html 파일을 생성하였다.
기존에 views.py 에 있던 index() 함수를 대체하는 PostList 클래스를 ListView 클래스로 상속해서 만들었고 URL도 views.PostList.as_view()로 바꿔주었다.