Django Rest Framework View Types

  1. Views (Class-based views and Function-based views)
  2. Generic Views
  3. Viewsets

DRF Views


Function Based Views

DRF는 사용자가 기존의 함수 기반의 뷰를 사용할 수 있도록 허용한다. 함수 기반의 뷰는 DRF의 Request 인스턴스 (기존의 장고 HttpRequest가 아니라) 간단한 데코레이터의 집합을 제공한다.

from rest_framework.decorators import api_view

@api_view()
def hello_world(request):
    return Response({"message": "Hello, world!"})

함수 기반 뷰는 기본으로 GET 메소드만 허용한다. 다른 메소드로 접근한다면 405 Method Not Allowed로 응답한다. 다른 메소드를 사용하려면 다음과 같이 어떤 특정 메소드를 사용할 것인지 명시해주면 된다.

@api_view(['GET', 'POST'])
def hello_world(request):
    if request.method == 'POST':
        return Response({"message": "Got some data!", "data": request.data})
    return Response({"message": "Hello, world!"})

Generic Views