DRF models.py 설정하는것에 이어서 views.py도 정리해 보자.
지금 정리를 하긴 하지만 나중에 이해가 더 높아지면 models.py[2] 처럼 views.py도 다시 정리할 수도 있을것 같다.
먼저 DRF views.py의 기본은 3가지를 import해야 한다.
가장 중요한 임포트 3가지는 Response, APIView, permissions 이다.
Response 는 return Response({" " : " "})와 같이 데이터를 return 할때 사용한다
APIView 는 APIView를 상속 받아 CBV(Class Based View)로 views를 구현한다
permissions 는 permissions class 라고 부른다.
permission_classes = [permissions. 권한 설정 ] 과 같이 permissions 뒤에 무엇을 넣어주느냐에 따라
class에 접속할 권한을 준다.
from rest_framework.response import Response
from rest_framework.views import APIView
from rest_framework import permissions, #status
Response 예시 코드
def get(self, request):
return Response({'message': 'get method!!'})
APIView는 함수명 뒤에 method를 적어주는 것 만으로 데이터를 주고 받을 수 있다. 예시 코드
def get(self)
permissions 에서 자주 사용 되는 3가지 권한이다. 예시 코드
class UserView(APIView): # CBV 방식
permission_classes = [permissions.AllowAny] # 누구나 view 조회 가능
permission_classes = [permissions.IsAdminUser] # admin만 view 조회 가능
permission_classes = [permissions.IsAuthenticated] # 로그인 된 사용자만 view 조회 가능
3가지를 합친 views.py
# views.py
from rest_framework.response import Response
from rest_framework.views import APIView
from rest_framework import permissions
class UserView(APIView): # CBV 방식
permission_classes = [permissions.AllowAny] # 누구나 view 조회 가능
# permission_classes = [permissions.IsAdminUser] # admin만 view 조회 가능
# permission_classes = [permissions.IsAuthenticated] # 로그인 된 사용자만 view 조회 가능
def get(self, request):
# 상황에 따른 status 를 return 해 줄 수 있다.
user = request.user
return Response(UserSerializer(user).data, status=status.HTTP_200_OK)method!!'})
def post(self, request):
return Response({'message': 'post method!!'})
def put(self, request):
return Response({'message': 'put method!!'})
def delete(self, request):
return Response({'message': 'delete method!!'})
댓글