기술블로그-Django편

📌 Django CBV는 결국 함수일까? CBV vs FBV 본질 비교와 실무 활용 전략

Chansman 2025. 5. 8. 10:53

📌 Django CBV는 결국 함수일까? CBV vs FBV 본질 비교와 실무 활용 전략


✅ 1. CBV도 결국 함수다?

네, 맞습니다! CBV(Class-Based View)도 결국은 내부에서 함수를 사용하는 구조입니다.

단지 그 함수가 **클래스 내부의 메서드(get, post 등)**로 구조화되어 있고,
Django가 이를 자동으로 연결해서 실행해주는 방식입니다.


✅ 2. FBV vs CBV 구조 차이

항목 FBV (Function-Based View) CBV (Class-Based View)

방식 하나의 함수로 처리 클래스 + 메서드 분리 구조
요청 처리 if문으로 method 분기 get(), post() 등 메서드로 분기
구조 절차지향 객체지향 (역할 분리)
재사용성 낮음 상속 + Mixin으로 높음

✅ 3. 공통점: 결국 모두 Python 함수 실행

공통점 설명

요청 처리 CBV도 내부적으로 get/post 같은 메서드를 호출함
뷰 결과 결국 HttpResponse, render() 등 동일 방식으로 응답 반환

차이는 "함수를 구조화해서 쓰느냐, 단순하게 쓰느냐의 차이입니다.


✅ 4. CBV 내부 동작 원리

class MyView(View):
    def get(self, request):
        return HttpResponse("GET 처리")

# 연결
path('test/', MyView.as_view())

🔄 실행 흐름:

  1. as_view() 호출 → 인스턴스 생성
  2. dispatch() 호출 → 요청 메서드(GET/POST) 확인
  3. 해당 메서드(get(), post()) 실행 → 응답 반환

✅ 5. Mixin과 상속으로 확장 가능한 CBV

class LoginRequiredMixin:
    ...

class BlogUpdateView(LoginRequiredMixin, UpdateView):
    model = Blog
    ...
  • Mixin: 인증, 권한 같은 로직을 재사용 가능하게 구성
  • 상속: 반복되는 구조를 최소화, 유연한 오버라이딩

✅ 6. 실무 활용 전략

상황 선호 방식 이유

단순 텍스트 응답 FBV 빠르고 간결함
CRUD 처리 CBV (ListView, DetailView) 구조화, 반복성에 유리
비동기 API 처리 FBV (DRF 기반 함수) 조건 분기와 예외 처리 유리
인증/권한 검사 CBV + Mixin 인증 로직을 모듈화 가능

실무에서는 보통 CBV를 기본 구조로 쓰고,
복잡한 로직은 FBV로 처리하는 혼합 전략이 일반적입니다.


✅ 7. 요약 정리

항목 FBV CBV

구조 하나의 함수 클래스 + 메서드 구성
요청 처리 조건문 메서드 분리 (get, post)
장점 직관적, 빠름 구조화, 확장성, 재사용성 높음
실무 사용 커스텀 로직 CRUD/패턴화된 뷰

🧠 결론

CBV는 결국 함수입니다.
다만 그 함수를 더 잘 구조화하고, 재사용 가능하게 만든 객체지향적인 방식일 뿐입니다.

FBV는 빠르고 단순하고,
CBV는 강력하고 체계적입니다.
→ 상황에 맞게 두 가지를 적절히 혼용하는 것이 실무 전략의 핵심입니다.