-
Django Rest Framework Permissions, DRF 권한카테고리 없음 2021. 9. 8. 22:51SMALL
Movie 모델과 Review 모델이 있을 때, Review Object는 작성자만 수정이 가능하고 나머지는 볼 수만 있게 한다고 했을 때 권한을 어떻게 해야 될까?
api 폴더에 permissions.py를 아래와 같이 만든다.
SAFE_METHOD에는 ('GET', 'HEAD', 'OPTIONS') 값이 들어있다.from rest_framework import permissions class IsReviewAuthorOrReadOnly(permissions.BasePermission): def has_object_permission(self, request, view, obj): if request.method in permissions.SAFE_METHODS: return True return obj.author == request.user
moviews/api/views.py 에 아래와 같이 permission_classes 를 넣는다
from movies.api.permissions import IsReviewAuthorOrReadOnly class ReviewCreateAPIView(generics.CreateAPIView): queryset = Review.objects.all() serializer_class = ReviewSerializer permission_classes = [permissions.IsAuthenticatedOrReadOnly]
이렇게 했을 경우, 작성자는 PUT을 할 수 있지만 나머지는 Review를 GET만 할 수 있다.
위를 잘 응용하면 다양한 권한 설정이 가능ㅎ~
BIG