개요

Django는 Python으로 작성된 오픈소스 웹 프레임워크. “배터리 포함(Batteries included)” 철학으로 ORM, 관리자 패널, 인증, 폼 처리 등을 기본 제공.

  • 출시: 2005년
  • 공식 사이트: https://djangoproject.com
  • 라이선스: BSD
  • 설계 원칙: DRY(Don’t Repeat Yourself), MVT 패턴

시작하기

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)
                    ↓
                 응답
컴포넌트역할
ModelDB 스키마·쿼리 (ORM)
View비즈니스 로직
TemplateHTML 렌더링

기본 예제

# 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'),
]

주요 기능

기능설명
ORMPython 코드로 DB 쿼리, SQL 직접 작성 불필요
Admin/admin 자동 생성 관리자 패널
Auth로그인·권한 시스템 내장
Forms폼 유효성 검사 내장
REST FrameworkDRF로 API 서버 구축
ChannelsWebSocket 지원

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

항목DjangoFastAPI
접근법풀배터리, 빠른 시작최소 구성, 자유도 높음
ORM내장 ORMSQLAlchemy, SQLModel 등 선택
성능보통고성능 (비동기)
자동문서DRF Swagger 수동OpenAPI 자동 생성
적합전통적 웹앱, 어드민API 서버, 마이크로서비스

관련 항목