์ค๋์ DRF์ view set์ ๋ํด์ ์์๋ณธ๋ค.
์ด๋ฏธ ์๊ณ ์๋ฏ์ด View๋ API์๋ํฌ์ธํธ์์ ์ํ๋๋ ๋์๋ค์ ์ ์ํ๋ ๊ณณ์ด๋ค.
๋ฐ๋ผ์ ํน์ ์๋ํฌ์ธํธ์ ๋ํ ์์ฒญ์ ๋ฐ์ ์ฒ๋ฆฌํ๊ณ , ์๋ต์ ์์ฑํด ๋ฐํํ๋ค.
๋ทฐ๋ฅผ ์์ฑํ๋๋ฐ์๋ ์ธ๊ฐ์ง์ ๋ฐฉ์์ด ์๊ณ , ์ด๋ ๊ฐ๊ฐ ํจ์๊ธฐ๋ฐ ๋ทฐ, ํด๋์ค ๊ธฐ๋ฐ ๋ทฐ๋ก ๋๋๋ค.
#ํจ์ ๊ธฐ๋ฐ ๋ทฐ
from django.http import HttpResponse
def my_view(request):
return HttpResponse("Hello, World!")
# ํด๋์ค ๊ธฐ๋ฐ ๋ทฐ
from django.views import View
from django.http import HttpResponse
class MyView(View):
def get(self, request):
return HttpResponse("Hello, World!")
๋ทฐ๋ URLํจํด๊ณผ ๋งคํ๋์ด์ ํน์ URL์ ๋ํ ์์ฒญ์ ์ฒ๋ฆฌํ๋ค. ๋ํ request ๊ฐ์ฒด๋ฅผ ๋ฐ์ response๊ฐ์ฒด๋ฅผ ๋ฐํํ๋ค.
๋ทฐ์ ์ ๊ฒฝ์ฐ์๋ DRF์์ ๋ฑ์ฅํ ๊ฐ๋ ์ผ๋ก, DRF์์ ๋ฐ์ดํฐ์ CRUD์์ ์ ์ํํ๋ API์ค๋ํฌ์ธํธ์ ๋น์ฆ๋์ค ๋ก์ง์ ์ ์ํ๋๋ฐ์ ์ฌ์ฉ๋๋ค. ์ฃผ๋ก ์ฅ๊ณ ์ ๋ชจ๋ธ๊ณผ ์ฐ๊ฒฐ๋์ด DB์ ์ํธ์์ฉํ๊ฒ ๋๋ค.
์ด๋ฐ ๋ทฐ์ ๋ํ ํจ์ ๊ธฐ๋ฐ๊ณผ ํด๋์ค๊ธฐ๋ฐ์ผ๋ก ๋๋์ด์ง๋ค.
# ํจ์๊ธฐ๋ฐ
from rest_framework.decorators import api_view
from rest_framework.response import Response
@api_view(['GET'])
def my_viewset(request):
# ๋ก์ง ์ํ
data = {'message': 'Hello, World!'}
return Response(data)
# ํด๋์ค ๊ธฐ๋ฐ
from rest_framework.views import APIView
from rest_framework.response import Response
class MyViewSet(APIView):
def get(self, request):
# ๋ก์ง ์ํ
data = {'message': 'Hello, World!'}
return Response(data)
# ModelViewSet์ฌ์ฉ
from rest_framework.viewsets import ModelViewSet
from rest_framework.response import Response
from rest_framework import status
from .models import MyModel
from .serializers import MyModelSerializer
class MyModelViewSet(ModelViewSet):
queryset = MyModel.objects.all()
serializer_class = MyModelSerializer
def custom_action(self, request):
# ์ฌ์ฉ์ ์ ์ ์ก์
์ ๋ํ ๋ก์ง
return Response({'message': '์ฌ์ฉ์ ์ ์ ์ก์
์ฒ๋ฆฌ'}, status=status.HTTP_200_OK)
๋ทฐ์ ์ APIViewํด๋์ค๋ฅผ ์์๋ฐ์ ๊ตฌํ๋๊ณ , ๊ฐ HTTP๋ฉ์๋(GET, POST, PUT, DELETE ...)์ ๋ํ ๋ก์ง์ ๊ตฌํํ๋ค.
ํจ์๊ธฐ๋ฐ๋ณด๋ค๋ ํด๋์ค๊ธฐ๋ฐ ๋ทฐ์ ์ผ์ข ์ผ๋ก ๋ณด์ ํด๋์ค ๊ธฐ๋ฐ ํํ๋ก ์์ฑํ๋ค.
์ด๋ฏธ DRF์์๋ API๊ฐ๋ฐ์ ์ง์ํ๊ธฐ ์ํด์ ๋ฏธ๋ฆฌ ์ ์๋ ๋ทฐ์ ๋ค์ ์ง์ํ๊ณ ์๋ค.
๋ํ์ ์ผ๋ก ViewSet, ModelViewSet, ReadOnlyModelViewSet๋ฑ์ด ์๊ณ , ModelViewSet์ List, Create, Retrieve, Update, Destroy๋ฑ์ ๊ธฐ๋ณธ์ ์ธ API์๋ํฌ์ธํธ๋ฅผ ์ ๊ณตํ๋ค.
'๐ฅProject > Team22' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Team 22] DRF - Generic API View (0) | 2024.02.08 |
---|---|
[Team 22] DRF Authentication - dj-rest-auth (0) | 2024.02.08 |
[Team 22] Django REST Framework (2) - Serializers (0) | 2024.02.03 |
[Team 22] Django REST Framework(1) (0) | 2024.02.03 |
[23-2]๊ฐ๋ฐ ํ๊ฒฝ ์ค์ , ๊ฐ๋ฐ ์ค๊ณ, ๊ตฌํ (0) | 2023.11.24 |