로딩 중이에요... 🐣
[코담]
웹개발·실전 프로젝트·AI까지, 파이썬·장고의 모든것을 담아낸 강의와 개발 노트
01 Django 실전 개발을 위한 3종 세트 소개Cookiecutter + Djoser + Django Ninja | ✅ 편저: 코담 운영자
Django 실전 개발을 위한 3종 세트 소개: Cookiecutter + Djoser + Django Ninja
✅ 01. Cookiecutter란?
Cookiecutter는 프로젝트 시작 시 필요한 구조를 자동으로 생성해주는 "템플릿 생성기" 도구입니다. Django 프로젝트를 깔끔하고 일관된 구조로 빠르게 세팅할 때 유용하게 쓰입니다.
주요 특징
- ✅ 폴더 구조 및 설정 자동 생성
- ✅
.env
파일 및 설정 분리 - ✅ Docker, PostgreSQL, Celery, Redis 통합 가능
- ✅ 보안 설정 포함 (SECRET_KEY 분리, HTTPS 설정 등)
- ✅ 팀 작업 시 일관성 유지에 유리
가장 많이 사용되는 템플릿
cookiecutter-django
: GitHub 링크
사용 예시
pip install cookiecutter
cookiecutter https://github.com/cookiecutter/cookiecutter-django
✅ 02. Djoser란?
Djoser는 Django REST Framework(DRF) 기반의 인증 API 라이브러리로, 회원가입/로그인 기능을 매우 빠르게 구현할 수 있게 해줍니다.
제공 기능
- ✅ 회원가입 / 로그인 / 로그아웃
- ✅ 비밀번호 변경 / 재설정
- ✅ 이메일 확인
- ✅ Token 또는 JWT 인증 지원 (SimpleJWT 연동 가능)
설치 및 설정
pip install djoser djangorestframework
# settings.py
INSTALLED_APPS = [
'rest_framework',
'rest_framework.authtoken',
'djoser',
]
# urls.py
urlpatterns = [
path('auth/', include('djoser.urls')),
path('auth/', include('djoser.urls.authtoken')),
# JWT 사용 시 추가
# path('auth/', include('djoser.urls.jwt')),
]
특징 요약
- DRF 기반에서 작동
- 인증 기능에 특화된 라이브러리
- 인증만 빠르게 붙이고 싶을 때 유용
✅ 03. Django Ninja란?
Django Ninja는 FastAPI 스타일의 타입 기반 REST API 프레임워크입니다. DRF보다 가볍고 직관적인 코드로 API를 만들 수 있습니다.
주요 특징
- ✅ Python 타입 힌트를 기반으로 API 개발
- ✅ FastAPI 스타일 라우팅
- ✅ Pydantic 모델 지원
- ✅ 관리자용 도구 API나 경량 프로젝트에 적합
설치 및 예시 코드
pip install django-ninja
from ninja import NinjaAPI
api = NinjaAPI()
@api.get("/hello")
def hello(request):
return {"message": "Hello Ninja"}
urlpatterns = [
path("api/", api.urls),
]
특징 요약
- 코드가 간결하고 직관적
- 인증 기능은 직접 구현 필요
✅ 04. Djoser + Django Ninja 결합 사용법
목적
Djoser는 인증 API를 제공하고, Django Ninja는 타입 기반 비즈니스 API를 제공합니다. 둘 다 Django 기반이며 독립적으로 작동하기 때문에 함께 사용 가능합니다.
설치
pip install djoser djangorestframework django-ninja
settings.py
INSTALLED_APPS = [
...
'rest_framework',
'rest_framework.authtoken',
'djoser',
]
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': [
'rest_framework.authentication.TokenAuthentication',
],
}
urls.py
from django.contrib import admin
from django.urls import path, include
from ninja import NinjaAPI
api = NinjaAPI()
@api.get("/hello")
def hello(request):
return {"message": "Hello from Ninja"}
urlpatterns = [
path("admin/", admin.site.urls),
path("auth/", include("djoser.urls")),
path("auth/", include("djoser.urls.authtoken")),
path("api/", api.urls),
]
Ninja에서 인증 연동 예시
from ninja.security import HttpBearer
from rest_framework.authtoken.models import Token
class TokenAuth(HttpBearer):
def authenticate(self, request, token):
try:
return Token.objects.get(key=token).user
except Token.DoesNotExist:
return None
auth = TokenAuth()
@api.get("/secure", auth=auth)
def secure_endpoint(request):
return {"user": request.auth.username}
✅ 05. 용도 및 선택 가이드
항목 | Cookiecutter | Djoser | Django Ninja |
---|---|---|---|
주 목적 | 프로젝트 구조 자동 생성 | 인증 API 제공 | 전체 REST API 프레임워크 |
사용 시기 | 프로젝트 시작 시 | 사용자 인증이 필요할 때 | 전체 API 개발 시 |
DRF 필요 | ❌ | ✅ (필수) | ❌ |
인증 기능 | ❌ | ✅ | ❌ (직접 구현 필요) |
장점 | 구조화, Docker, .env 통합 | 인증 자동화, JWT/Token 지원 | 타입 기반, FastAPI 스타일, 경량화 |
추천 대상 | 실무 프로젝트 세팅용 | 인증이 필요한 DRF 프로젝트 | 직관적이고 빠른 API를 원하는 경우 |
✨ 결론
- Cookiecutter-Django: Django 프로젝트의 구조와 환경을 빠르게 세팅하고 싶다면 강력 추천!
- Djoser: 회원가입/로그인 등 인증 기능을 빠르게 구현하고 싶은 REST API 프로젝트에 적합
- Django Ninja: DRF보다 간결한 코드, 타입 기반 API를 선호한다면 추천
- Djoser + Ninja 조합: 인증은 Djoser, 나머지 API는 Ninja로 처리하는 하이브리드 구성도 실무에서 매우 유용