我已经写了自定义权限
class IsObjectOwner(permissions.BasePermission):
def has_permission(self, request, view):
if ...
.....
return False
else:
return True
我正在尝试将其应用于一些特定的视图定义。
url(r'^get_possible_moves/', include('GameView.get_possible_moves')),
url(r'^get_available_pieces/', include('GameView.get_available_pieces')),
url(r'^remove_pieces/', include('GameView.remove_pie
ces')),
class GameView(viewsets.ModelViewSet):
queryset = GameModel.objects.all()
serializer_class = GameSerializer
def get_available_pieces(self,request,*args,**kwargs):
permission_classes(IsObjectOwner,)
....
def get_possible_moves(self,request,*args,**kwargs):
permission_classes(IsObjectOwner,)
.....
def remove_pieces(self,request,*args,**kwargs):
permission_classes(IsObjectOwner,)
......
.......
但该权限不适用于该视图,并且该权限似乎未被调用。我想知道如何在视图定义上实现自定义权限,感谢任何帮助。
注意:此视图中还有其他定义,我不想强加权限。所以,我无法将权限放在视图级别。 这不是一盘棋。
答案 0 :(得分:0)
将permissions_classes
设置为整个视图集,而不仅仅是函数。
class GameView(viewsets.ModelViewSet):
permission_classes = (IsObjectOwner,)
queryset = GameModel.objects.all()
serializer_class = GameSerializer
def get_available_pieces(self,request,*args,**kwargs):
....
return
def get_possible_moves(self,request,*args,**kwargs):
....
return
def remove_pieces(self,request,*args,**kwargs):
....
return