2017-07-26 16 views
1

私は次のビューがあります。ジャンゴ残りのフレームワーク - ブラウズ可能なAPIが削除削除

私は良い403を取得するにはログインしていません
def retrieve(self, request, pk=None, **kwargs): 
    try: 
     instance = self.get_object() 
     self.check_object_permissions(self.request, instance) 
     serializer = PasswordFolderSerializer(instance, context={'request': request}) 
     return Response(serializer.data) 
    except Http404: 
     return Response(status=status.HTTP_404_NOT_FOUND) 

しかし、「削除」ボタンは、まだ閲覧可能なAPIで示しています。どうすればこれを取り除くことができますか?ここに私の許可がある:

class CanRetrievePasswordFolder(permissions.DjangoObjectPermissions): 

    def has_permission(self, request, view): 
     if request.user is None: 
      return False 
     else: 
      return True 

    def has_object_permission(self, request, view, obj): 
     access_levels = ['Owner', 'Admin', 'Read'] 
     if get_permission_level(request, obj) is None: 
      return False 
     else: 
      level = AccessLevel.objects.get(pk=get_permission_level(request, obj).level_id).name 
      if request.method in permissions.SAFE_METHODS: 
       return True 
      else: 
       for access in access_levels: 
        if level == access: 
         return True 
        else: 
         return False 

答えて

0

本当に愚かな、私は私の権限ににisAuthenticated追加する必要がありましたので、のようなビューにタプル:

permission_classes_by_action = {'create': [CanCreatePasswordFolder, IsAuthenticated], 
           'list': [CanListPasswordFolder, IsAuthenticated], 
           'retrieve': [CanRetrievePasswordFolder, IsAuthenticated], 
           'partial_update': [CanUpdatePasswordFolder, IsAuthenticated], 
           'update': [CanUpdatePasswordFolder, IsAuthenticated], 
           'destroy': [CanDestroyPasswordFolder, IsAuthenticated]} 
関連する問題