Django vs Django DRF 프레임워크 차이
🤔 한 줄 요약
Django → 웹 페이지(HTML) 를 만드는 프레임워크
Django DRF → 데이터(JSON) 를 주고받는 프레임워크
1️⃣ Django 프레임워크 과정
브라우저 요청
↓
urls.py (URL 매칭)
↓
views.py (로직 처리)
↓
models.py (DB 조회)
↓
template (HTML 생성)
↓
HTML 페이지 응답
실제 코드
def todo_list(request):
todos = Todo.objects.all()
return render(
request,
"todo/todo.html",
{"todos": todos}
)
{% for todo in todos %}
<p>{{ todo.name }}</p>
{% endfor %}
결과
────────────────────────
브라우저에 HTML 페이지가 보임
화면 + 데이터 같이 반환
2️⃣ Django DRF 프레임워크 과정
브라우저/앱 요청
↓
urls.py (URL 매칭)
↓
views.py (로직 처리)
↓
models.py (DB 조회)
↓
serializers.py (JSON 변환)
↓
JSON 데이터 응답
실제 코드
class TodoSerializer(serializers.ModelSerializer):
class Meta:
model = Todo
fields = "__all__"
class TodoViewSet(ModelViewSet):
queryset = Todo.objects.all()
serializer_class = TodoSerializer
// 결과 - JSON 데이터 반환
{
"id": 1,
"name": "공부하기",
"complete": false,
"created_at": "2026-03-06"
}
3️⃣ 핵심 차이점
Django Django DRF
──────────────────────────────────────────
HTML 반환 JSON 반환
render() Response()
템플릿 필요 템플릿 불필요
Serializer 없음 Serializer 필수
브라우저만 사용 앱/웹 모두 사용
4️⃣ 파일 구조 차이
Django Django DRF
──────────────────────────────────────────
models.py ✅ models.py ✅
views.py ✅ views.py ✅
urls.py ✅ urls.py ✅
templates/ ✅ templates/ ❌ 불필요
serializers.py ❌ 없음 serializers.py ✅ 추가됨
5️⃣ views.py 차이
def todo_list(request):
todos = Todo.objects.all()
return render(request,
"todo/todo.html",
{"todos": todos})
class TodoViewSet(ModelViewSet):
queryset = Todo.objects.all()
serializer_class = TodoSerializer
6️⃣ URL 설정 차이
urlpatterns = [
path("todo/", views.todo_list),
path("todo/<int:pk>/", views.todo_detail),
]
router = DefaultRouter()
router.register("todo", TodoViewSet)
urlpatterns = [
path("", include(router.urls)),
]
7️⃣ Serializer란?
DRF에만 있는 핵심 개념!
DB 데이터 JSON
────────────────────────────────
<Todo: 공부하기> → {"name": "공부하기"}
(Python 객체) (JSON 데이터)
역할
────────────────────────
① 데이터 변환 (Python ↔ JSON)
② 데이터 유효성 검사
③ 데이터 저장
class TodoSerializer(serializers.ModelSerializer):
class Meta:
model = Todo
fields = "__all__"
8️⃣ 언제 뭘 쓰나?
Django 사용 DRF 사용
──────────────────────────────────────
웹사이트만 만들 때 앱도 같이 만들 때
HTML 페이지 필요할 때 API 서버 만들 때
혼자 쓰는 서비스 여러 플랫폼 서비스
블로그, 쇼핑몰 카카오, 인스타그램
🗺️ 전체 흐름 비교
Django
──────────────────────────────────────
요청 → URL → View → Model → Template → HTML
DRF
──────────────────────────────────────
요청 → URL → View → Model → Serializer → JSON
차이점
Template → Serializer 로 바뀐 것!
HTML → JSON 으로 바뀐 것!
💡 핵심 요약
Django
────────────────────────
HTML 만드는 도구
눈에 보이는 화면 제공
템플릿(HTML) 이 핵심
DRF
────────────────────────
데이터 주고받는 도구
JSON 데이터 제공
Serializer 가 핵심
결론
────────────────────────
Django = 완성된 음식 제공 🍱
DRF = 재료(데이터)만 제공 🥩
(요리는 앱/프론트가 함)