2016-09-06 5 views
2

Im пытается найти способ создания пользовательских разрешений в представлении. Im хочет реализовать Somthing так:Пользовательские разрешения для просмотров:

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: сортировка разрешения метода. (вышеуказанный код не работает, причина «запрос» не распознается)

Не удалось найти применение в разделе «Пользовательские разрешения» документации, но, возможно, Im просто слепой. (Переопределение 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

Смежные вопросы