개요
Django는 Python으로 작성된 오픈소스 웹 프레임워크. “배터리 포함(Batteries included)” 철학으로 ORM, 관리자 패널, 인증, 폼 처리 등을 기본 제공.
시작하기
pip install django
# 프로젝트 생성
django-admin startproject myproject
cd myproject
# 앱 생성
python manage.py startapp myapp
# 개발 서버
python manage.py runserver
# DB 마이그레이션
python manage.py makemigrations
python manage.py migrate
# 관리자 계정 생성
python manage.py createsuperuser
MVT 패턴
요청 → urls.py → views.py → models.py (DB)
↓
templates/ (HTML)
↓
응답
| 컴포넌트 | 역할 |
|---|
| Model | DB 스키마·쿼리 (ORM) |
| View | 비즈니스 로직 |
| Template | HTML 렌더링 |
기본 예제
# models.py
from django.db import models
class Post(models.Model):
title = models.CharField(max_length=200)
content = models.TextField()
created_at = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.title
# views.py
from django.shortcuts import render
from .models import Post
def post_list(request):
posts = Post.objects.all().order_by('-created_at')
return render(request, 'posts/list.html', {'posts': posts})
# urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.post_list, name='post-list'),
]
주요 기능
| 기능 | 설명 |
|---|
| ORM | Python 코드로 DB 쿼리, SQL 직접 작성 불필요 |
| Admin | /admin 자동 생성 관리자 패널 |
| Auth | 로그인·권한 시스템 내장 |
| Forms | 폼 유효성 검사 내장 |
| REST Framework | DRF로 API 서버 구축 |
| Channels | WebSocket 지원 |
Django REST Framework (DRF)
# serializers.py
from rest_framework import serializers
from .models import Post
class PostSerializer(serializers.ModelSerializer):
class Meta:
model = Post
fields = '__all__'
# views.py (API)
from rest_framework import viewsets
from .models import Post
from .serializers import PostSerializer
class PostViewSet(viewsets.ModelViewSet):
queryset = Post.objects.all()
serializer_class = PostSerializer
vs FastAPI
| 항목 | Django | FastAPI |
|---|
| 접근법 | 풀배터리, 빠른 시작 | 최소 구성, 자유도 높음 |
| ORM | 내장 ORM | SQLAlchemy, SQLModel 등 선택 |
| 성능 | 보통 | 고성능 (비동기) |
| 자동문서 | DRF Swagger 수동 | OpenAPI 자동 생성 |
| 적합 | 전통적 웹앱, 어드민 | API 서버, 마이크로서비스 |
관련 항목