🧭 Django CBV(Class-Based View) + 요청/응답 흐름 정리

2025. 5. 14. 15:23·기술블로그-Django편

🧭 Django CBV(Class-Based View) + 요청/응답 흐름 정리

1️⃣ CBV란?

**CBV(Class-Based View)**는 Django에서 뷰를 클래스 기반으로 구현할 수 있게 해주는 기능입니다.

✅ 장점

  • 코드 재사용성 ✅
  • 명확한 역할 분리 ✅
  • 유지보수 편의성 ✅

CBV는 함수형 뷰(FBV)보다 더 구조적이며, CRUD 로직에 적합합니다.


2️⃣ View 클래스 기본 구조

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

class MyView(View):
    def get(self, request):
        return HttpResponse("GET 요청")

    def post(self, request):
        return HttpResponse("POST 요청")

📌 get(), post() 등 HTTP 메서드에 따라 동작 분리


3️⃣ Generic Views 종류

Django는 CBV에서 자주 쓰는 CRUD 패턴을 추상화한 Generic View를 제공합니다.

클래스 역할

ListView 전체 목록 조회
DetailView 단일 객체 상세 조회
CreateView 새 객체 생성
UpdateView 기존 객체 수정
DeleteView 객체 삭제 및 리디렉션
TemplateView 단순 HTML 렌더링 용도
FormView 폼 처리 중심 뷰

예시: CreateView

from django.views.generic import CreateView
from .models import Post

class PostCreateView(CreateView):
    model = Post
    fields = ['title', 'content']
    template_name = 'post/create.html'
    success_url = '/posts/'

4️⃣ request 객체에서 정보 가져오기

🔑 사용자 정보

request.user  # 현재 로그인한 사용자 객체

📦 POST/GET 데이터

request.POST.get('title')
request.GET.get('page')

🔗 URL 파라미터 (Path Parameter)

# urls.py
path('post/<int:pk>/', PostDetailView.as_view(), name='detail')

# views.py
class PostDetailView(DetailView):
    def get_object(self):
        pk = self.kwargs['pk']
        return Post.objects.get(pk=pk)

❓ 쿼리 파라미터 (Query Parameter)

/posts/?page=2
page = request.GET.get('page')

5️⃣ response 구성 요소

✅ HttpResponse

from django.http import HttpResponse
return HttpResponse("페이지 응답")

🔁 HttpResponseRedirect

from django.http import HttpResponseRedirect
return HttpResponseRedirect('/login/')
  • 주로 POST 요청 후 GET 이동(리다이렉션)에 사용

📡 status code 변경

return HttpResponse("권한 없음", status=403)

📤 JSON/데이터 응답

from django.http import JsonResponse
return JsonResponse({'result': 'success'})

✅ 요약표

항목 설명

CBV 클래스 기반 뷰 (코드 구조화 및 재사용 가능)
Generic Views CRUD 중심 뷰 제공 (List, Create 등)
request.user 현재 로그인한 사용자 객체
request.GET/POST 입력 데이터 가져오기
URL/Query 파라미터 kwargs / request.GET.get() 방식으로 활용
response HttpResponse, Redirect, JsonResponse 등 제공

📌 CBV를 활용하면 구조적이고 재사용성 높은 뷰 구성이 가능하며, 다양한 요청 처리 및 응답 반환을 유연하게 구현할 수 있습니다!

'기술블로그-Django편' 카테고리의 다른 글

📂 Django 모델에서 str() 함수 작동 흐름 완벽 해설  (0) 2025.05.14
📬 Django 이메일 전송 및 보안 서명 처리  (0) 2025.05.14
👤 Django 사용자 인증 시스템 완전 정리  (0) 2025.05.14
🛠️ Django ORM 완벽 가이드  (0) 2025.05.14
📝 Django Form 기본 정리  (0) 2025.05.14
'기술블로그-Django편' 카테고리의 다른 글
  • 📂 Django 모델에서 str() 함수 작동 흐름 완벽 해설
  • 📬 Django 이메일 전송 및 보안 서명 처리
  • 👤 Django 사용자 인증 시스템 완전 정리
  • 🛠️ Django ORM 완벽 가이드
Chansman
Chansman
안녕하세요! 코딩을 시작한 지 얼마 되지 않은 초보 개발자 찬스맨입니다. 이 블로그는 제 학습 기록을 남기고, 다양한 코딩 실습을 통해 성장하는 과정을 공유하려고 합니다. 초보자의 눈높이에 맞춘 실습과 팁, 그리고 개발하면서 겪은 어려움과 해결 과정을 솔직하게 풀어내려 합니다. 함께 성장하는 개발자 커뮤니티가 되기를 바랍니다.
  • Chansman
    찬스맨의 프로그래밍 스토리
    Chansman
  • 전체
    오늘
    어제
    • 분류 전체보기 (794) N
      • Python (32)
      • 프로젝트 (113)
      • 과제 (25)
      • Database (40)
      • 멘토링 (11)
      • 특강 (37)
      • 기술블로그 (41)
      • 기술블로그-Fastapi편 (33)
      • 기술블로그-Django편 (154) N
      • 기술블로그-Flask편 (36)
      • AI 분석 (5)
      • HTML & CSS (31)
      • JavaScript (17)
      • AWS_Cloud (21)
      • 웹스크래핑과 데이터 수집 (14)
      • Flask (42)
      • Django (77)
      • Fastapi (16)
      • 연예 (14)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    americanlaw
    global politics
    btsjungkook
    homebartrend
    hotcoffeecase
    gpterror
    livebroadcast
    lawsuitculture
    remittance
    travel ban
    classaction
    trumpmuskclash
    college reunions
    youngprofessionals
    americaparty
    smartphonedurability
    bts
    self-growth
    btsreunion
    basalcellcarcinoma
    뷔
    chatgpterror
    urbantrends
    chinanightlife
    btscomeback
    newpoliticalparty
    life reflection
    btsdischarge
    titaniumcase
    RM
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Chansman
🧭 Django CBV(Class-Based View) + 요청/응답 흐름 정리
상단으로

티스토리툴바