2016-02-20 29 views
2

如何为基于功能的视图编写自定义权限?我正在使用REST框架,并编写了一个密文加密/解密API。我为每个密钥(key-detail)提供了一个基于功能的视图,我只想让该密钥的所有者可以使用该视图。我知道在使用基于类的视图时,定义permission_classes就足够了,但我如何为基于视图的功能执行此操作?我已经使用@permission_classes装饰试过,但它不工作对我的自定义权限,它被写成这样:Django - 基于功能的视图的自定义权限

class IsOwner(permissions.BasePermission): 
    """ 
    Custom permission to only allow owners of an object to access it. 
    """ 

    def has_object_permission(self, request, view, obj): 
     return obj.owner == request.user 

回答

1

看起来这是一个众所周知的问题,采用基于功能视图时has_object_permission不被支持,这是报道为here

如果你想打电话has_permission,你应该能够做到这一点使用permission_classes装饰如图所示documentation

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

但它是一个视图功能,有没有这样的东西'self'所以我不能调用'self.check_object_permissions(request,obj)'。 –

相关问题