Django Ninja 공식 페이지 : https://django-ninja.rest-framework.com/

 

장고 닌자는 FAST API에서 영감을 받아서 만들어진 Web FrameWork이다. 

빠른속도와 쉬운 사용법 Swagger 기능 지원을 제공하고 있다. 

아직 초기 버전이지만 서비스를 하기에는 무리가 없다. 

 

Django Ninja는 Python 3.6버전 이상부터 지원한다. 

 

Pydantic을 사용한다. (데이터 값의 검증을 위해 사용한다. 클라이언트에서 서버로 보낸 데이터가 실제로 필드의 형식에 맞는지 확인하는 절차이다.)

 

async support 비동기를 지원한다.

 

공식문서에 있는 영상 튜토리얼을 통해 Django Ninja의 사용방법을 정리해본다. 

참고 영상 : Django Ninja Tutorial

 

 

1. 프로젝트 생성

 

 

1) 장고 닌자를 설치한다.

pip install django-ninja

 

 

2) 실습을 진행할 Django 프로젝트를 만든다.

django-admin startproject djninja

 

 

3) 실습에 필요한 tracks app을 만든다. 

python manage.py startapp tracks

 

 

4) settings.py 수정

INSTALLED_APPS = [
	....
    
    'tracks',
]

 

 

2. 간단한 테스트

 

 

1) tracks/api.py

from ninja import NinjaAPI

api = NinjaAPI()

@api.get("/test")
def test(request):
	return {"test": 'success'}

api를 구현할 app폴더에 api.py를 생성하고 테스트를 위해 위와 같이 작성한다. 

Django Ninja를 사용할 api라는 이름의 객체를 만들어 주었다. 

데코레이터를 통해 @api.method("접속할 url") 형식으로 적는다. 

POST POST를 통해 해당 URI를 요청하면 리소스를 생성합니다.
GET GET를 통해 해당 리소스를 조회합니다. 리소스를 조회하고 해당 도큐먼트에 대한 자세한 정보를 가져온다.
PUT PUT를 통해 해당 리소스를 수정합니다.
DELETE DELETE를 통해 리소스를 삭제합니다.

출처 : https://meetup.toast.com/posts/92

 

 

2) djninja/urls.py

...
from tracks.api import api

urlpatterns = [
	...
    path('api/', api.urls),
]

urls.py에 api 서버경로를 추가해준다. 

 

 

3) migration을 진행해준다. 

python manage.py makemigrations & python manage.py migrate

 

 

4) 서버 실행, 테스트

python manage.py runserver

서버가 실행되었으면 127.0.0.1/api/test/ 로 접속하면 "test" : 'success'를 확인할 수 있을 것이다. 

 

 

3. 실습

 

 

1) 실습에 필요한 데이터와 코드 가져오기

https://github.com/bugbytes-io/django-ninja-v1 

위 git hub로 들어가서 밑에 적어놓은 코드와 데이터를 복사해서 똑같은 구조로 만들어 준다. 

(1) data/tracks.json

(2) tracks/management/__init__.py, ingest_tracks.py

 

(똑같은 구조로 만들 것이기 때문에 폴더까지 그대로 가져와도 된다.)

 

 

2) tracks/models.py 작성

from django.db import models

class Track(models.Model):
    title = models.CharField(max_length=250)
    artist = models.CharField(max_length=250)
    duration = models.FloatField()
    last_play = models.DateTimeField()

 

 

3) migration 진행

python manage.py makemigrations & python manage.py migrate

 

 

4) ingest_tracks.py를 통해 tracks.json에서 데이터 추출

python manage.py ingest_tracks

 

 

튜토리얼 2에서 이어집니다.

 

'Back-End > Django-ninja' 카테고리의 다른 글

Django Ninja Render  (0) 2021.11.30
Django Ninja Tutorial 5  (0) 2021.11.30
Django Ninja Tutorial 4  (0) 2021.11.30
Django Ninja Tutorial 3  (0) 2021.11.29
Django Ninja Tutorial 2  (0) 2021.11.29

+ Recent posts