2017-08-21 4 views
1

Wie können benutzerdefinierte Berechtigungen im Viewset im Django-Rest-Framework mit Ausnahme der Standardberechtigung beim Erstellen eines Moduls hinzugefügt werden? Ich habe eine Erlaubnis "fix_an_appointment". Wie können Sie diese Berechtigung in das folgende Viewset aufnehmen? Diejenigen, die diese Erlaubnis haben, können nur erstellen.So fügen Sie benutzerdefinierte Berechtigungen im Ansichtssatz hinzu

Meine views.py Datei:

class settingsViewSet(viewsets.ModelViewSet): 
    serializer_class = SettingsSerializer 
    queryset = Setting.objects.all() 

Kann jemand helfen?

Antwort

1

einfach ein erstellen custom permission class

class FixAnAppointmentPermssion(permissions.BasePermission): 
    def has_permission(self, request, view): 
     return True or False 

dann die Ihrer Ansicht nach Setklasse benutzen, um Ihre benutzerdefinierte Berechtigung

class settingsViewSet(viewsets.ModelViewSet): 
    serializer_class = SettingsSerializer 
    queryset = Setting.objects.all() 
    permission_classes = (FixAnAppointmentPermssion,) 
0

von docs custom-permissions, Liste der Ansicht Aktionen actions my_permissions.py

from rest_framework import permissions 

class FixPermission(permissions.BasePermission): 
    """ 
    fix_an_appointment 
    """ 

    def has_permission(self, request, view): 
     if request.user.is_authenticated : 
      if view.action == 'retrieve': 
       return request.user.has_perms('fix_list_perm') 
      if view.action == 'retrieve': 
       return request.user.has_perms('fix_an_appointment') 
     return False 

in views.py

from my_permissions import FixPermission 


class settingsViewSet(viewsets.ModelViewSet): 
    serializer_class = SettingsSerializer 
    queryset = Setting.objects.all() 
    permission_classes = (FixPermission,) 
+0

Danke für die Antwort. Ich möchte für jede Aktion separate Berechtigungen hinzufügen, bearbeiten, löschen und aktualisieren. Wie geht das? –

+0

bearbeitete Antwort mit Aktionsansicht, mehr Details aller Aktionen in Verbindung –

0

können wir die Erlaubnis wie schaffen für jede Funktionen gesetzt, retrive, zu aktualisieren, löschen (hinzufügen, bearbeiten, löschen und zu aktualisieren)

from my_permissions import FixPermission 

class FixAnAppointmentPermssion(permissions.BasePermission): 
    def has_permission(self, request, view): 
     return True or False 

class YourViewSet(viewsets.ModelViewSet): 
serializer_class = SettingsSerializer 
queryset = Your.objects.all() 

@permission_classes(FixAnAppointmentPermssion,) 
def create(request, format=None): 
    content = { 
      'status': 'request was permitted' 
    } 
return Response(content) 

@permission_classes(FixAnAppointmentPermssion,) 
def retrive(request, format=None): 
    content = { 
      'status': 'request was permitted' 
    } 
return Response(content) 
Verwandte Themen