목차

  1. 클래스 기반 뷰 (Class-Based Views, CBV)
  2. CBV 기본 구조
    1. View
    2. APIView
  3. URL 패턴에 CBV 연결
    1. urls.py → views.py
    2. Raw data → json: serializer

클래스 기반 뷰 (Class-Based Views, CBV)

🌪️ Django의 view는 HTTP 요청을 처리하고 HTTP 응답을 반환하는 역할을 합니다.

🌪️ 기본적으로 Django는 함수 기반 뷰(Function-Based Views, FBV)를 제공하지만,

    더 구조적이고 재사용 가능한 코드를 작성하기 위해 클래스 기반 뷰(Class-Based Views, CBV)를 제공합니다.

🌪️ CBV는 객체 지향 프로그래밍(OOP)의 개념을 활영하여 뷰를 구성합니다.

클래스 기반 뷰란?

🌪️ 클래스 기반 뷰는 Python 클래스 형태로 작성된 뷰입니다.

🌪️ FBV에서는 하나의 함수로 요청을 처리하지만, CBV에서는 클래스를 사용하여 요청 매서드(GET, POST 등) 별로 로직을 분리하거나

    재사용 가능한 코드를 작성할 수 있습니다.

🌪️ CBV는 다음과 같은 장점을 제공합니다:

  • 코드 재사용성 : 공통 로직을 상속받아 사용할 수 있습니다.
  • 구조적 설계 : 요청 메서드(GET, POST 등)를 명확히 분리할 수 있습니다.

🔝


2. CBV 기본 구조

2.1. View

🌪️ CBV는 django.views 모듈의 View 클래스를 상속받아 구현합니다.

🌪️ 기본 구조는 다음과 같습니다:

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

class MyView(View):
    def get(self, request):
        return HttpResponse('GET 요청에 대한 응답입니다.')

    def post(self, request):
        return HttpResponse('POST 요청에 대한 응답입니다.')

 

🌪️ 주요 메서드

  • get(self, request, *args, **kwargs): GET 요청을 처리하는 메서드.
  • post(self, request, *args, **kwargs): POST 요청을 처리하는 메서드.
  • put(self, request, *args, **kwargs): PUT 요청을 처리하는 메서드.
  • delete(self, request, *args, **kwargs): DELETE 요청을 처리하는 메서드.

2.2. APIView

🌪️ APIView는 Django REST Framework에서 제공하는 기본적인 클래스 기반 뷰입니다.

🌪️ django.views.View 클래스를 상속받아 HTTP 메서드(GET, POST, PUT, DELETE 등)에 대한 핸들러 메서드를 정의합니다.

# django-rest-framework
pip install djangorestframework
from rest_framework.views import APIView
from rest_framework.response import Response

class MyView(APIView):
    def get(self, request):
        return Response({'message': 'GET 요청에 대한 응답입니다.'})

    def post(self, request):
        return Response({'message': 'POST 요청에 대한 응답입니다.'})

🔝


3. URL 패턴에 CBV 연결

🌪️ CBV를 URL에 연결하려면 클래스 자체를 호출하는 것이 아니라 .as_view() 메서드를 사용해야 합니다.

🌪️ 이 메서드는 클래스를 호출 가능한 객체로 변환합니다.

🌪️ 예제:

from django.urls import path
from .views import MyView

urlpatterns = [
    path('myview/', MyView.as_view(), name='myview'),
]

 

3.1. urls.py → views.py


3.2. Raw data → json : serializer

'🔥 공부 > 📘 Django, DRF' 카테고리의 다른 글

[📘 DRF] APIView 기반 CRUD  (0) 2025.02.11
[📘 Django, DRF] API란?  (0) 2025.02.11
[📘 Django] 관계형 데이터베이스  (0) 2025.02.10
[📘 Django] Django User 모델(Model)  (0) 2025.02.10
[📘 Django] Model  (1) 2025.02.10

🐾Recent posts