💡 AI 인사이트

🤖 AI가 여기에 결과를 출력합니다...

댓글 커뮤니티

쿠팡이벤트

이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

검색

    로딩 중이에요... 🐣

    [코담] 웹개발·실전 프로젝트·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 설정 등)
    • ✅ 팀 작업 시 일관성 유지에 유리

    가장 많이 사용되는 템플릿

    사용 예시

    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로 처리하는 하이브리드 구성도 실무에서 매우 유용

    TOP
    preload preload