[파이썬][Django] DRF를 사용한 API 개발 방법과 예제

Django REST framework (DRF)를 사용하여 API를 개발하는 방법과 간단한 예제를 설명하겠습니다. DRF는 Django 기반의 강력한 API 프레임워크로, RESTful API를 빠르고 쉽게 개발할 수 있도록 도와줍니다.

DRF 설치

먼저, Django REST framework를 설치합니다. 아래와 같이 명령을 실행하세요:

pip install djangorestframework

DRF 설정

  1. settings.py 설정:

    settings.py 파일에서 DRF를 추가합니다.

INSTALLED_APPS = [
        # ...
        'rest_framework',
    ]
  1. 시리얼라이저 생성:

    API에서 사용할 데이터 모델에 대한 시리얼라이저를 생성합니다. 시리얼라이저는 데이터 모델을 JSON 형태로 변환하고 반대로 JSON 데이터를 모델 객체로 변환합니다.

# serializers.py
    
    from rest_framework import serializers
    from .models import MyModel
    
    class MyModelSerializer(serializers.ModelSerializer):
        class Meta:
            model = MyModel
            fields = '__all__'
  1. 뷰 생성:

    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
  1. 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를 만들겠습니다.

  1. 모델 생성:
# models.py
    
    from django.db import models
    
    class MyModel(models.Model):
        name = models.CharField(max_length=100)
        description = models.TextField()
  1. 시리얼라이저 생성:
# serializers.py
    
    from rest_framework import serializers
    from .models import MyModel
    
    class MyModelSerializer(serializers.ModelSerializer):
        class Meta:
            model = MyModel
            fields = '__all__'
  1. 뷰 생성:
# 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
  1. 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를 구축할 수 있습니다.