시리즈 개요 × 대상 독자#

이 글은 Django Ninja 시리즈 튜토리얼의 첫 번째 글이에요.
30일간 진행되는 이번 시리즈에서는 Django Ninja의 기초 구현을 자세히 다룰 예정이에요. 글로 된 설명과 예제 프로젝트의 코드를 통해, 강력하고 유연한 이 Django API 개발 프레임워크에 한 걸음씩 익숙해지도록 도와드릴게요.
Django 생태계의 떠오르는 샛별(2020년 탄생)인 Django Ninja는 Django의 안정성과 FastAPI의 현대적인 특징인 Python 타입 힌트(Pydantic을 통해 구현됨)를 융합했어요. 이러한 강력한 조합은 개발자에게 안정적이고 효율적이며 직관적인 API 개발 경험을 제공해요.
경험이 풍부한 Django 개발자든, API 개발 분야에 갓 입문한 초보자든, 이 시리즈는 실용적인 Django Ninja 실전 경험과 팁을 제공해 줄 거예요.
배경 소개와 기본 개념부터 시작해서 점진적으로 Django Ninja의 각 부분을 깊이 있게 탐구하며, 이 최신 API 개발 도구를 빠르게 익힐 수 있도록 도와드릴게요.
GitHub 예제 프로젝트#
권장 사전 지식#
이 시리즈의 타겟은 '입문자' 수준이지만, 여기서 말하는 입문은 Django Ninja 프레임워크에 대한 입문이에요.
따라서 튜토리얼 내용과 예제 프로젝트 코드를 최대한 활용하려면, 다음 지식을 갖추는 것을 권장해요:
- Python 기초 지식: Python 문법에 익숙하며, Python 개발 경험이 있으면 더욱 좋아요.
- Django 기초: ORM, Views, MTV 아키텍처 등 Django의 기본 구성 요소를 이해하고 있어야 해요. 하지만 우리는 API를 개발할 것이므로, Templates 부분은 몰라도 괜찮아요.
- HTTP 및 Web API 개념: HTTP, Web API, 프론트엔드와 백엔드 분리가 무엇인지 알고, RESTful API 설계 원칙에 대한 기본적인 이해가 필요해요.
- 버전 관리: 예제 프로젝트를 원활하게 조작하고 활용하기 위해 Git, GitHub의 기본 작업에 익숙해야 해요.
이러한 지식을 갖추고 있다면 본 시리즈의 내용을 더 잘 이해하고 적용할 수 있을 거예요. 일부 개념이 조금 낯설더라도 걱정하지 마세요. 필요한 경우 일정 부분 설명을 곁들일 예정이니까요.
대상 독자#
본 시리즈는 다음과 같은 독자에게 "특별히 추천"해요. 본인이 어디에 속하는지 한 번 확인해 보세요.
1. Python 백엔드 입문자#
Python 백엔드 개발, 특히 고품질 API를 구축하는 방법을 알고 싶은 분.
2. Django 개발자#
풀스택이든 백엔드든 모든 Django 개발자는 이 시리즈의 대상 독자예요.
3. FastAPI 개발자#
이미 FastAPI 개발 기초를 다진 독자라면, Django Ninja를 배우는 건 식은 죽 먹기일 거예요🤚
4. API 개발 효율을 높이고 싶은 개발자#
Django Ninja는 간결하고 빠른 API 개발 방식을 제공해요.
그중 가장 큰 장점은 "Pydantic과 Python type hints를 통해 자동으로 API 문서를 생성한다"는 점이에요. 덕분에 이제 훌륭한 API 문서를 어떻게 작성할지 고민할 필요가 없어지죠.

Python 개발자가 아니더라도, 소규모 프로젝트에서 비교적 간단한 기능을 구현하고자 할 때 Django Ninja는 매우 매력적인 선택지가 될 수 있어요.
5. Type Hints에 익숙해지고 싶은 Python 개발자#
제가 예전에 쓴 〈《견고한 파이썬(Robust Python)》 노트: 어떻게 Type Hints를 효과적으로 도입할까〉 글에서 언급한 적이 있어요:
Django Ninja(또는 FastAPI)를 작성하려면, 어차피 올바르고 합리적인 API 문서를 생성하기 위해 대량의 type hints를 작성해야 해요. 그렇다면 사용자 정의 함수나 클래스 등 프로젝트의 나머지 부분에도 type hints를 추가하도록 요구할 때, 그에 대한 거부감은 상대적으로 훨씬 적어지겠죠.
제 생각에는 Pydantic 프레임워크 채택으로 인한 이러한 효과가 마치 자전거의 보조 바퀴처럼, 처음 type hints를 사용하기 시작할 때 분명 긍정적인 안내 역할을 해준다고 봐요.
Python type hints는 실제 응용 사례가 부족하면 흔히 이런 걸 작성하는 게 너무 번거롭고 심지어 불필요하다고 느끼게 만들곤 해요. 이건 인지상정이죠.
하지만 가장 좋은 응용 사례는 도구 자체가 반드시 작성할 것을 요구하고, 그 과정에서 직접 이점을 얻을 수 있는 경우예요. Django Ninja가 바로 그런 도구예요.
방향과 취사선택#
본 시리즈에서는 개발자들이 API를 빠르게 익히고 구현할 수 있도록 돕기 위해, Django Ninja의 핵심 기능과 실제 응용에 집중할 예정이에요.
내용의 실용성과 명확성을 보장하기 위해 몇 가지 취사선택을 했어요:
- API 개발에 집중: Django Ninja를 사용하여 라우팅을 정의하고 요청과 응답을 처리하는 방법 등을 다뤄요. 이러한 기능들은 실제 응용에서 가장 흔히 필요한 요구사항이며, 초보자가 우선적으로 익혀야 할 부분이기도 하죠.
- 동기(sync) 작업에 초점: Django Ninja는 비동기 작업(async)을 지원하지만, Django 자체의 비동기 지원은 여전히 점진적으로 개선되는 중이에요.
- 초보자들이 불필요한 기술적 세부사항으로 혼란스러워하지 않도록, 우리는 동기 작업만 다룰 예정이에요.
- 이는 개발 프로세스를 단순화할 뿐만 아니라 현재 주류를 이루는 Django 사용 관행과도 일치한답니다.
- API 개발과 무관한 부분은 생략: Django는 거대하고 포괄적인 프레임워크로서, 국제화(i18n), 템플릿 엔진 등 API 개발 범위를 벗어나는 많은 기능을 포함하고 있어요.
- 이런 기능들이 일부 응용 시나리오에서는 중요할 수 있지만, 본 시리즈의 주제와는 관련성이 낮기 때문에 과감히 생략하기로 했어요.
- 단위 테스트, 배포, 컨테이너화 등은 중요한 부분만 언급하고, 자세히 소개하지는 않을 거예요.
- API 문서 작성과 품질에 특별히 주목: 명확하고 고품질인 API 문서는 현대 소프트웨어 개발에서 없어서는 안 될 부분이에요. 특히 팀 협업이나 제3자에게 오픈 API를 제공할 때 매우 중요하죠.
- Django Ninja에는 "코드에서 자동으로 API 문서를 생성하는" 기능이 있어요. 우리는 이 기능을 어떻게 효과적으로 활용할지 깊이 있게 탐구할 예정이에요.
- 깊이 있게 탐구한다는 건 무슨 뜻일까요? API 문서가 자동으로 생성될 뿐만 아니라, 높은 가독성과 정확성까지 갖추도록 보장하는 거예요. 프론트엔드 개발자들이 안도할 수 있게요.

소결#
시리즈의 전체적인 방향을 이해하셨으니, 다음으로 본 시리즈의 구조와 챕터 구성을 소개해 드릴게요. 처음부터 각 챕터의 핵심을 파악하고, Django Ninja의 핵심 기능을 어떻게 점진적으로 학습할지 이해하실 수 있을 거예요.
다음 글에서는 시리즈 전체의 내용 구성을 파악하고 앞으로의 학습을 준비하는 데 도움이 되도록, 각 챕터의 주요 내용과 핵심을 구체적으로 소개할게요.