我對Django-rest-framework中的BasePermission
感到困惑。DRF中的has_object_permission和has_permission之間有什麼區別:權限?
這裏我定義了一個類:IsAuthenticatedAndOwner
。
class IsAuthenticatedAndOwner(BasePermission):
message = 'You must be the owner of this object.'
def has_permission(self, request, view):
print('called')
return False
def has_object_permission(self, request, view, obj):
# return obj.user == request.user
return False
在views.py
class StudentUpdateAPIView(RetrieveUpdateAPIView):
serializer_class = StudentCreateUpdateSerializer
queryset = Student.objects.all()
lookup_field = 'pk'
permissions_classes = [IsAuthenticatedAndOwner]
使用不過,這並不在all.Everyone工作可以通過許可和更新數據。 called
未打印。
,我用定義這個類:IsNotAuthenticated
class IsNotAuthenticated(BasePermission):
message = 'You are already logged in.'
def has_permission(self, request, view):
return not request.user.is_authenticated()
它運作良好,在功能
class UserCreateAPIView(CreateAPIView):
serializer_class = UserCreateSerializer
queryset = User.objects.all()
permission_classes = [IsNotAuthenticated]
那麼,什麼是上面的例子之間的差異,以及功能has_object_permission
& has_permission
?
感謝您的回答。也許我的問題不清楚。首先,我的代碼與您的代碼一樣。但它沒有工作,每個人都可以通過權限。然後我通過'return False'更新函數。它仍然通過每個人。 –