permissions {drf}

system-wide permission policy: settings.py 안에 REST_FRAMEWORK를 설정

REST_FRAMEWORK = {
    "DEFAULT_PERMISSION_CLASSES": [
        "rest_framework.permissions.IsAuthenticated",
    ]
}

APIView 클래스 단위의 permission policy: permission_classes 속성을 사용

from rest_framework.permissions import IsAuthenticated
from rest_framework.response import Response
from rest_framework.views import APIView

class ExampleView(APIView):
    permission_classes = [IsAuthenticated]

    def get(self, request, format=None):
        content = {
            'status': 'request was permitted'
        }
        return Response(content)

함수 단위의 permission policy: api_view 데코레이터 사용

from rest_framework.decorators import api_view, permission_classes
from rest_framework.permissions import IsAuthenticated
from rest_framework.response import Response

@api_view(['GET'])
@permission_classes([IsAuthenticated])
def example_view(request, format=None):
    content = {
        'status': 'request was permitted'
    }
    return Response(content)

객체 단위의 permission policy: self.check_object_permissions 메서드 사용. get_object 메서드 자체에 이미 권한확인 코드가 있다.