CS 면접 준비

TIL230724 FBV와 CBV는 각각 무엇이며, 어떤 차이가 있습니까?

베스트오버 2023. 7. 24. 19:44

Django에서 뷰를 생성하는 방식에 따라 Function-Based View(FBV)와 Class-Based View(CBV)라는 두 가지 방식이 있습니다.

 

FBV (Function-Based View)

  • 함수 기반으로 뷰를 정의하는 방식입니다.
  • 각 요청에 대한 로직을 단일 함수로 처리하며, 각 함수는 HTTP 요청을 인자로 받아서 HTTP 응답을 반환합니다.
  • 코드가 간결하고 직관적이며, 제어 흐름을 쉽게 이해할 수 있기 때문에 복잡하지 않은 로직을 처리하는 뷰를 만드는 데 적합합니다.

 

from django.http import HttpResponse
from django.shortcuts import render

def hello_world(request):
    return HttpResponse("Hello, python!")

 

CBV (Class-Based View)

  • 클래스를 사용하여 뷰를 정의하는 방식입니다.
  • Django의 CBV는 미리 정의된 메소드나 믹스인을 재사용할 수 있어서 재사용성이 높고 코드 중복을 줄일 수 있는 큰 장점이 있습니다.
  • 뷰의 공통적인 패턴(폼 처리, 목록 표시 등)을 추상화하여 제공하기 때문에 표준적인 웹 페이지를 빠르게 개발하는 데 유리합니다.
  • 제어 흐름이 FBV보다 복잡하며, 상속과 믹스인의 사용으로 코드를 이해하고 디버깅하는 것이 어려울 수 있습니다.

 

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

class HelloWorldView(View):
    def get(self, request):
        return HttpResponse("Hello, python!")

 

결론

  • FBV와 CBV 중 어떤 것을 사용할지는 개발 상황과 개인의 취향에 따라 다르지만, 일반적으로 뷰의 복잡성이 높아질수록 CBV를, 간단한 뷰에서는 FBV를 사용하는 것이 일반적입니다.
  • 중요한 것은 FBV와 CBV의 차이를 이해하고, 각각의 장단점을 고려하여 적절한 방식을 선택하는 것입니다.