Django REST Framework (DRF)는 Django를 위한 강력하고 유연한 도구로, RESTful API를 쉽게 개발할 수 있도록 도와준다. DRF는 Django의 기능을 확장하여, API를 신속하게 구축하고 유지보수할 수 있게 해준다.
하기전에...
settings.py의 INSTALLED_APPS에 'rest_framework'를 추가해주어야한다.
주요 특징
1. Serializer: 데이터베이스 모델과 JSON 같은 데이터 형식 간의 변환을 간편하게 해준다.
# serializers.py
from rest_framework import serializers
from .models import MyModel
class MyModelSerializer(serializers.ModelSerializer):
class Meta:
model = MyModel
fields = '__all__'
2. Views and ViewSets: APIView를 활용하여 API요청과 응답을 하기 쉽게 도와주고 그외에 다양한 View들이 존재한다. 이러한 View들을 상속하거나 데코레이션을 이용하여 작성하면 된다. ViewSet이란 것도 있는데, CRUD과정을 쉽게 만들어준다.
# views.py
from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework import status
from .models import Item
from .serializers import ItemSerializer
class ItemList(APIView):
def get(self, request):
items = Item.objects.all()
serializer = ItemSerializer(items, many=True)
return Response(serializer.data)
def post(self, request):
serializer = ItemSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
# 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
3. routers: 주로 viewset을 사용할때 쓰게 될텐데 라우팅을 편리하게 해준다.
4. Authentication and Permissions: 다양한 인증 방법을 지원한다. 기본 인증(세션, 토큰)뿐만 아니라 OAuth, JWT 등 다양한 인증 방식을 사용할 수 있습니다. 권한 관리를 통해 특정 사용자만 접근할 수 있도록 설정할 수 있다.
다음과 같은 특징들이 있고 필자는 요청 중간에 다른 작업을 받는게 많이서 주로 APIView를 쓴다. (다른 view와 viewset에 비해 비교적 원시적이지만 가장 유연하다고 생각한다.)
'python > django' 카테고리의 다른 글
파이썬으로 백엔드 서비스 개발하기 1편: django란? (0) | 2024.05.20 |
---|