[Django-Ninja]


장고닌자란?

장고 닌자 – https://github.com/vitalik/django-ninja

GitHub – vitalik/django-ninja: API 구축을 위한 빠르고, 비동기 인식, openapi, 유형 힌트 기반 프레임워크

API 구축을 위한 빠른 비동기식 openapi 기반 프레임워크 – GitHub – vitalik/django-ninja: API 구축을 위한 빠른 비동기식 openapi 기반 프레임워크

github.com

Python의 FastAPI 프레임워크의 영향을 받아 개발된 Django 기반 웹 프레임워크로 최근까지 지속적으로 업데이트되어 Python 3.6+ 이상의 환경에서 Pydantic 및 비동기식을 지원합니다.

장고 닌자의 장단점

Django의 장단점은 다음과 같습니다.

  • 쉽게 만들 수 있습니다(Django의 기본 구성을 일부 따르지만 Flask 또는 Fast API와 유사한 구조를 가짐).
  • Pydantic 패키징 스키마를 지원하여 데이터 검증의 이점(기존 DRF의 느린 검증을 보완)
  • 유형 힌트가 지원되어 보다 안정적인 코드를 작성할 수 있습니다.
  • API Docs 문서 자동 생성(OpenAPI 형식을 따르며, Docs는 FastAPI처럼 자동 지원되어 편리한 API 테스트 가능)
  • Django의 ORM을 그대로 사용하기 쉬움(FastAPI는 SqlAlchemy를 ORM으로 사용해야 함)
  • 비동기가 지원됩니다. (현재 장고는 wsgi 기반으로 sync_to_async 등을 통한 비동기 처리가 가능한 수준이다. 지름길)

장고 닌자 상용구

경험적으로 작성된 상용구는 다음과 같습니다.

소스 코드: 지름길

├── project/			// project 폴터
│   ├── __init__.py
│   ├── asgi.py
│   ├── settings.py
│   ├── urls.py			// 최초 url 진입점
│   └── wsgi.py
├── app1/
│   ├── __init__.py
│   ├── apps.py
│   ├── router/			// router
│   │   ├── user_api.py
│   │   └── profile_api.py
│   ├── service/		// service (business logic)
│   │   ├── user_service.py
│   │   └── profile_service.py
│   ├── schema/			// schema
│   │   ├── user_Schema.py
│   │   └── profile_Schema.py
│   ├── test/			// test code
│   │   ├── test_user.py
│   │   └── test_profile.py
│   └── models.py		// models ORM
├── _utils/ 			// util 함수 폴더
│   ├── aws_service.py
│   └── decorator.py
├── manage.py
├── Dockerfile
└── requirements.txt