Python/Django

[Django] CBV (클래스 기반 View) vs FBV (함수 기반 View)

yubi5050 2022. 6. 19. 01:09

Django의 MTV (Model - Template - View) 에서 View를 작성하는 방법은 다음 두 가지가 존재

  • CBV (Class Based View)
  • FBV (Function Based View) 

 

두 방법에 대한 작성 예시와 장단점을 알아보려고 한다.

 

 

1. CBV vs FBV 장단점 비교

  장점 단점
CBV 객체 지향 기법으로 확장, 재사용 용이
IF 함수 대신 메소드 기반이라 코드 구조가 깔끔
Generic 뷰, Mixin 클래스 뷰 등을 사용 가능
Generic 뷰, Mixin 클래스 뷰를 사용하기 위한 학습 필요
FBV 데코레이터 사용 명로
가독성 좋음
확장, 재사용이 어렵다.

 

2. CBV (클래스 기반 View) 코드

# views.py
from django.http import HttpResponse
from django.views import View

class cbv_view(View):
    def get(self ,request):
        return HttpResponse('CBV View - GET 입니다')
        
    def post(self, request):
        return HttpResponse('CBV View - POST 입니다')

 

 

3. FBV (함수 기반 View)

# views.py
from django.http import HttpResponse

def fbv_view(request):
    if request.method =='GET':
        return HttpResponse('FBV View - GET 입니다')
    
    elif request.method =='POST':
        return HttpResponse('FBV View - POST 입니다')