Django REST框架-每个方法的单独权限
我正在使用Django REST Framework编写API,并且想知道在使用基于类的视图时是否可以为每个方法指定权限。
阅读文档,如果您正在编写基于函数的视图,那么仅使用@permission_classes
装饰器对要使用权限保护的视图的函数,我认为这样做非常容易。不过,我不明白的方式使用与CBVS时做同样的APIView
课,因为那时我指定用满级的权限permission_classes
属性,但将被再应用到所有类方法(get
,post
,put
…
)。
因此,是否可以用CBV编写API视图,并为视图类的每个方法指定不同的权限?
-
权限应用于整个View类,但是您可以在授权决策中考虑请求的各个方面(例如GET或POST之类的方法)。
参见内置
IsAuthenticatedOrReadOnly
示例:SAFE_METHODS = ['GET', 'HEAD', 'OPTIONS'] class IsAuthenticatedOrReadOnly(BasePermission): """ The request is authenticated as a user, or is a read-only request. """ def has_permission(self, request, view): if (request.method in SAFE_METHODS or request.user and request.user.is_authenticated()): return True return False