Django Rest Framework에 대한 개요와 기본 설정법에 대한 내용입니다.
Django Rest Framework(DRF)는 Python 웹 프레임워크인 Django를 기반으로 만들어진 RESTful API 개발을 위한 프레임워크입니다. DRF는 Django에서 제공하는 기능을 활용하여 RESTful API를 보다 쉽게 개발할 수 있도록 도와줍니다.
Serialization
DRF는 Django 모델을 JSON, XML 등 다양한 형식의 데이터로 쉽게 변환할 수 있도록 serialization 기능을 제공합니다.
Authentication & Permissions
DRF는 다양한 인증 방식을 지원하며, 특정 API 요청에 대한 권한 설정을 할 수 있습니다.
Viewsets & Routers
DRF는 viewsets와 routers를 통해 API view를 보다 쉽게 개발할 수 있습니다. Viewsets는 Django의 model을 기반으로 CRUD(Create, Retrieve, Update, Delete) API를 자동으로 생성해주는 기능을 제공합니다. Routers는 viewsets와 URL을 연결해주는 기능을 제공합니다.
Pagination & Throttling
DRF는 API 결과를 페이지로 나누어 반환하거나, API 요청에 대한 쓰로틀링(Throttling)을 적용할 수 있도록 기능을 제공합니다.
Exception Handling
DRF는 API 요청에 대한 예외 처리를 자동으로 처리할 수 있도록 기능을 제공합니다.
위와 같은 기능을 제공하여, DRF는 RESTful API 개발을 보다 쉽고 빠르게 할 수 있도록 도와줍니다. 또한, Django의 확장성과 호환성을 유지하면서 API 개발을 할 수 있어, Django 사용자들에게 더욱 친숙하게 다가올 수 있습니다.
Django Rest Framework의 초기 세팅에 대해 알아보겠습니다.
먼저, 가상환경을 설정합니다. 가상환경을 설정하면 프로젝트 별로 필요한 패키지를 설치하고 관리할 수 있습니다.
$ python -m venv myvenv
$ source myvenv/bin/activate
$ pip install django
$ pip install djangorestframework
$ django-admin startproject myproject
$ cd myproject
$ python manage.py startapp myapp
settings.py
수정하기settings.py
파일을 수정합니다. INSTALLED_APPS
에 'rest_framework'
와 'myapp'
을 추가합니다....
INSTALLED_APPS = [
...
'rest_framework', # 추가
'myapp',
]
...
serializers.py
작성하기serializers.py
파일을 작성합니다. serializers.py
는 모델 객체를 JSON 형태로 변환하는 역할을 합니다.from rest_framework import serializers
from .models import MyModel
class MyModelSerializer(serializers.ModelSerializer):
class Meta:
model = MyModel
fields = '__all__'
views.py
작성하기views.py
파일을 작성합니다. views.py
는 API의 동작을 정의하는 역할을 합니다.from rest_framework import generics
from .models import MyModel
from .serializers import MyModelSerializer
class MyModelList(generics.ListCreateAPIView):
queryset = MyModel.objects.all()
serializer_class = MyModelSerializer
class MyModelDetail(generics.RetrieveUpdateDestroyAPIView):
queryset = MyModel.objects.all()
serializer_class = MyModelSerializer
urls.py
작성하기urls.py
파일을 작성합니다. urls.py
는 URL과 뷰를 연결하는 역할을 합니다.from django.urls import path
from .views import MyModelList, MyModelDetail
urlpatterns = [
path('mymodel/', MyModelList.as_view()),
path('mymodel/<int:pk>/', MyModelDetail.as_view()),
]
$ python manage.py makemigrations
$ python manage.py migrate