기술블로그-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())
🔄 실행 흐름:
- as_view() 호출 → 인스턴스 생성
- dispatch() 호출 → 요청 메서드(GET/POST) 확인
- 해당 메서드(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는 강력하고 체계적입니다.
→ 상황에 맞게 두 가지를 적절히 혼용하는 것이 실무 전략의 핵심입니다.