본문 바로가기
카테고리 없음

DRF views.py 만들기

by abccoco 2022. 6. 21.

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!!'})

댓글