首页 > 解决方案 > 授权和非授权用户的 1 个视图的 DRF 自定义权限

问题描述

想法是非身份验证用户只能 GET(list,retrieve) 视图。Auth 用户可以 GET、POST、PATCH、DELETE。

我怎样才能在自定义权限中做到这一点?

我的观点:

class BookViewSet(viewsets.ModelViewSet):
    permission_classes = (IsAuthenticated,)
    serializer_class = serializers.BookSerializer

    def get_queryset(self):
        return Book.objects.filter(user=self.request.user)

标签: djangodjango-rest-framework

解决方案


您可以通过扩展基类来做到这一点permissions.BasePermission

from rest_framework import permissions
class IsAuthorOrReadOnly(permissions.BasePermission):
    def has_object_permission(self, request, view, obj):
        if request.method in permissions.SAFE_METHODS:
            return True
        return obj.user == request.user

然后将其用作权限类permission_classes =(IsAuthorOrReadOnly,)


推荐阅读