【发布时间】:2016-10-20 01:14:32
【问题描述】:
我写了一个自定义权限
class IsObjectOwner(permissions.BasePermission):
def has_permission(self, request, view):
if ...
.....
return False
else:
return True
我正在尝试将其应用于一些特定的视图定义。
URLs.py
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')),
views.py
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,)
......
.......
但是权限在视图上不起作用,并且权限似乎没有被调用。我想知道如何在视图定义上实现自定义权限,不胜感激。
注意:此视图中还有其他定义,我不想对其施加权限。所以,我不能把权限放在视图级别。 这不是一盘棋。
【问题讨论】:
-
也许是method_decorator? Docs
-
是的,有一个method_decorator:
@permission_classes((IsAuthenticated, ))。但它可能仅适用于基于函数的视图。
标签: python django permissions django-rest-framework