기술블로그-Django편
📌 Django 뷰 구성 전략 - CBV vs FBV, 그리고 혼합 전략까지 완벽 비교 정리
Chansman
2025. 5. 8. 10:24
📌 Django 뷰 구성 전략 - CBV vs FBV, 그리고 혼합 전략까지 완벽 비교 정리
1️⃣ CBV란? (Class-Based View)
클래스를 기반으로 뷰를 정의하는 방식입니다. Django가 제공하는 **제너릭 뷰(Generic View)**를 활용하면 코드 재사용성과 구조화된 설계가 가능합니다.
✅ 장점
- 재사용성: 클래스 상속 및 Mixin으로 기능 확장 쉬움
- 구조화: 메서드(GET, POST 등) 단위로 책임 분리 가능
- 확장성: ListView, DetailView, CreateView 등 기본 뷰 제공
📄 예시
from django.views.generic import ListView
class BlogListView(ListView):
model = Blog
template_name = 'blog_list.html'
context_object_name = 'blogs'
2️⃣ FBV란? (Function-Based View)
전통적인 방식으로, 함수로 뷰를 정의합니다. 단순하고 직관적인 코드가 장점입니다.
✅ 장점
- 간결함: 읽기 쉽고 빠르게 작성 가능
- 유연함: 조건문으로 로직 커스터마이징 용이
- 빠른 디버깅: 흐름 파악이 직관적
📄 예시
def blog_list(request):
blogs = Blog.objects.all()
return render(request, 'blog_list.html', {'blogs': blogs})
3️⃣ CBV vs FBV 비교표
항목 CBV (클래스 기반 뷰) FBV (함수 기반 뷰)
구조 | 클래스 | 함수 |
가독성 | 초보자에겐 다소 어렵지만 일관됨 | 매우 직관적이고 이해 쉬움 |
재사용성 | 상속, Mixin으로 뛰어남 | 함수 재활용은 제한적 |
확장성 | 장고 제너릭 뷰로 빠른 구현 | 조건문으로 자유롭게 구성 |
권장 케이스 | CRUD 패턴, 페이지네이션 등 | 단일 요청 처리, 간단한 로직 |
4️⃣ 실무에서는 어떤 걸 쓸까?
✅ 정답: 둘 다 씁니다. 상황에 따라 선택!
✔️ 추천 전략
상황 추천 방식 이유
단순한 입력 폼 / 고정 페이지 | FBV | 작성이 빠르고 직관적임 |
리스트 / 상세 / 작성 / 수정 / 삭제 (CRUD) | CBV | 제너릭 뷰로 효율적 관리 가능 |
복잡한 조건 분기 / 커스터마이징 많은 로직 | FBV | 유연하게 로직 처리 가능 |
팀 협업 / 대규모 프로젝트 | CBV | 역할 분리, 유지보수 유리함 |
5️⃣ 💡 혼합 전략 - 실무에서 가장 많이 쓰는 방식
✔️ CBV로 구조 잡고, FBV로 유연하게 보완한다!
✅ 실전 혼합 예시
- 블로그 게시글 목록, 상세 페이지 → ListView, DetailView (CBV)
- 댓글 추가, 신고 처리, 좋아요 기능 → def comment_create() (FBV)
- 관리자 전용 대시보드 → CBV + LoginRequiredMixin
- 조건 복잡한 API 응답 → FBV + @require_POST 등 데코레이터 조합
✅ 최종 정리
요약 설명
FBV | 간단한 로직, 빠른 구현, 디버깅 유리 |
CBV | 구조화, 재사용, 유지보수에 강점 |
혼합전략 | 실무에서 가장 현실적이고 효율적인 방식 |
💬 FBV는 쉽고 빠르며, CBV는 강력하고 체계적이다.
→ 상황에 맞게 유연하게 선택하는 것이 실력입니다!