기술블로그-Django편
📌 Django REST Framework(DRF)란?
Chansman
2025. 5. 15. 10:56
📌 Django REST Framework(DRF)란?
**Django REST Framework (DRF)**는 Django를 기반으로 RESTful API를 쉽고 빠르게 개발할 수 있도록 도와주는 라이브러리입니다.
✅ DRF의 핵심 기능
- 직렬화 (Serialization): 모델 데이터를 JSON 등으로 변환
- 클래스 기반 View (CBV): API 전용 클래스 구조로 재사용성 향상
- 권한 및 인증 시스템 내장
- 자동 URL 라우팅 지원
- 브라우저 테스트 인터페이스 제공 (Browsable API)
👉 DRF는 HTML 페이지를 보여주는 것이 아니라, 모바일/프론트엔드 앱과 연결되는 JSON 기반 API를 만드는 데 초점을 둡니다.
⚖️ Django의 다양한 View 방식 비교: FBV vs CBV vs DRF
1️⃣ FBV (Function-Based View)
def short_url_create_view(request):
if request.method == "POST":
form = ShortURLForm(request.POST)
if form.is_valid():
short_url = form.save(commit=False)
short_url.generate_code()
short_url.save()
return redirect("/")
- ✅ HTML 렌더링 및 리디렉션 중심
- ❌ 재사용/유지보수 어려움
- ✔️ 소규모 프로젝트에 적합
2️⃣ CBV (Class-Based View)
from django.views import View
from django.shortcuts import render
class MyPageView(View):
def get(self, request):
return render(request, "my_page.html")
- ✅ HTML 렌더링 가능 (기존 FBV 기능을 클래스화)
- ✅ 중복 줄이고, 재사용성 높임
- ❌ 복잡한 흐름은 추적이 어려울 수 있음
3️⃣ DRF (Django REST Framework)
from rest_framework import viewsets
from .models import Book
from .serializers import BookSerializer
class BookViewSet(viewsets.ModelViewSet):
queryset = Book.objects.all()
serializer_class = BookSerializer
- ✅ JSON API 전용
- ❌ HTML 렌더링은 목적이 아님
- ✅ 인증, 권한, 필터링, 페이징 등 API에 필요한 기능 다수 탑재
- ✅ Router로 URL 자동 등록
🔍 정리표로 한눈에 비교
구분 목적 HTML 렌더링 JSON API 방식
FBV | 함수 기반 처리 | ✅ 가능 | 🔸 가능 (JsonResponse) | 절차형 |
CBV | 클래스 구조화 처리 | ✅ 가능 | 🔸 가능 | 구조화된 방식 |
DRF | API 전용 클래스 기반 처리 | ❌ 권장 안함 | ✅ 기본 목적 | REST API 특화 |
💡 마무리 요약
- FBV: 함수형, 간단한 뷰 처리에 적합
- CBV: 구조화된 HTML 렌더링에 유리함
- DRF: JSON 응답 중심, API 개발에 특화
📌 DRF는 CBV 구조를 기반으로 하지만, 목적 자체가 HTML이 아닌 API 응답이라는 점에서 Django의 일반 CBV와 다릅니다.
필요 시, 위 기능들을 하나의 기능을 기준으로 FBV → CBV → DRF 변환 예제로도 제공 가능합니다!