2016-09-06 13 views
2

我試圖找到一種方法來在視圖集上創建自定義權限。 林希望實現這樣的財產以後:在視圖集上的自定義權限

class ActivityViewSet(viewsets.ModelViewSet): 
    queryset = Activity.objects.all() 
    serializer_class = ActivitySerializer 
    if request.method == 'PUT': 
     permission_classes = (permissions.IsOwner) 
    elif request.method == 'LIST': 
     permission_classes = (permissions.IsAdmin) 
    else : 
     permission_classes = (permissions.AllowAny) 

IE:通過方法排序的權限。 (上面的代碼does not工作原因「請求」不承認)

在文檔的「自定義權限」部分找不到任何用處,但也許我只是盲目。 (覆蓋BasePermission如何誰在哪裏????)

謝謝:)

回答

4

Viewsets使用action用於確定HTTP動詞和get_permissions方法調用的權限,所以你可以重寫它:

class ActivityViewSet(viewsets.ModelViewSet): 
    queryset = Activity.objects.all() 
    serializer_class = ActivitySerializer 

    def get_permissions(self): 
     if self.action == 'update': 
      return IsOwner() 
     elif self.action == 'list': 
      return IsAdminUser() 
     else : 
      return AllowAny() 
+0

最好的,謝謝:) – idik

+0

@idik不客氣:) –

+0

其實,有一個小問題。 'IsAdminUser()'不會被識別,會帶來NameError。 – idik