[파이썬][Django] DRF를 사용한 API 개발 방법과 예제
Django REST framework (DRF)를 사용하여 API를 개발하는 방법과 간단한 예제를 설명하겠습니다. DRF는 Django 기반의 강력한 API 프레임워크로, RESTful API를 빠르고 쉽게 개발할 수 있도록 도와줍니다.
DRF 설치
먼저, Django REST framework를 설치합니다. 아래와 같이 명령을 실행하세요:
pip install djangorestframework
DRF 설정
-
settings.py 설정:
settings.py
파일에서 DRF를 추가합니다.
INSTALLED_APPS = [
# ...
'rest_framework',
]
-
시리얼라이저 생성:
API에서 사용할 데이터 모델에 대한 시리얼라이저를 생성합니다. 시리얼라이저는 데이터 모델을 JSON 형태로 변환하고 반대로 JSON 데이터를 모델 객체로 변환합니다.
# serializers.py
from rest_framework import serializers
from .models import MyModel
class MyModelSerializer(serializers.ModelSerializer):
class Meta:
model = MyModel
fields = '__all__'
-
뷰 생성:
DRF에서 뷰를 생성합니다. 뷰는 API 엔드포인트에 대한 요청을 처리하고 응답을 반환합니다.
# views.py
from rest_framework import viewsets
from .models import MyModel
from .serializers import MyModelSerializer
class MyModelViewSet(viewsets.ModelViewSet):
queryset = MyModel.objects.all()
serializer_class = MyModelSerializer
-
URL 패턴 설정:
URL 패턴을 설정하여 API 엔드포인트를 생성합니다.
# urls.py
from django.urls import path, include
from rest_framework.routers import DefaultRouter
from .views import MyModelViewSet
router = DefaultRouter()
router.register(r'mymodels', MyModelViewSet)
urlpatterns = [
path('', include(router.urls)),
]
예제
간단한 API를 만들어보겠습니다. MyModel
모델을 생성하고 이 모델을 사용하여 데이터를 생성, 조회, 수정 및 삭제하는 API를 만들겠습니다.
- 모델 생성:
# models.py
from django.db import models
class MyModel(models.Model):
name = models.CharField(max_length=100)
description = models.TextField()
- 시리얼라이저 생성:
# serializers.py
from rest_framework import serializers
from .models import MyModel
class MyModelSerializer(serializers.ModelSerializer):
class Meta:
model = MyModel
fields = '__all__'
- 뷰 생성:
# views.py
from rest_framework import viewsets
from .models import MyModel
from .serializers import MyModelSerializer
class MyModelViewSet(viewsets.ModelViewSet):
queryset = MyModel.objects.all()
serializer_class = MyModelSerializer
- URL 패턴 설정:
# urls.py
from django.urls import path, include
from rest_framework.routers import DefaultRouter
from .views import MyModelViewSet
router = DefaultRouter()
router.register(r'mymodels', MyModelViewSet)
urlpatterns = [
path('', include(router.urls)),
]
이제 위의 예제를 통해 MyModel
모델을 다루는 API를 만들었습니다. DRF는 CRUD (Create, Read, Update, Delete) 작업을 쉽게 수행할 수 있도록 도와주며, 뷰셋과 시리얼라이저를 통해 간단하고 효율적인 API를 구축할 수 있습니다.