Django project-4

정경수·2022년 6월 12일
0

FBV 와 CBV

FBV(Function Based View) : 함수에 기반을 둔 방법
CBV(Class Based View) : django 가 제공하는 클래스를 활용해 구현

-FBV



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 레코드를 하나씩 나열하였다.

-CBV

여러 포스트들을 나열할때는 ListView 클래스를 활용한다.

사진에서 처럼

from django.views.generic import ListView

명령어로 ListView를 import 시켜주고

django가 제공하는 ListView는 모델명 뒤에 '_list'가 붙은 html 파일을 기본 template로 사용하도록 설정되어 있다. post 모델을 사용하려면 post_list.html 이 필요

  1. PostList class내에서 template_name = 을 지정해주는 방법
  2. post_list.html 을 바로만드는 방법

2번 방식을 선택하여 html 파일을 생성하였다.

기존에 views.py 에 있던 index() 함수를 대체하는 PostList 클래스를 ListView 클래스로 상속해서 만들었고 URL도 views.PostList.as_view()로 바꿔주었다.

profile
장 : 장고를 한번 마스터해볼까 합니다 고 : Go

0개의 댓글