기술블로그-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는 강력하고 체계적이다.
→ 상황에 맞게 유연하게 선택하는 것이 실력입니다!