Wie wende ich eine Berechtigungsklasse auf eine bestimmte Methode in klassenbasierten Ansichten im Django-Rest Framework an?

StackOverflow https://stackoverflow.com//questions/22010675

  •  21-12-2019
  •  | 
  •  

Frage

Ich möchte die Berechtigung nur für die Methode „PUT“ anwenden, nicht für die Methode „POST“.

class Signup(APIView):
    def post(self, request, format=None):
        something...something

    @authentication_classes((ExpiringTokenAuthentication,))
    @permission_classes((IsAuthenticated,))
    def put(self, request, format=None):
        something...something
War es hilfreich?

Lösung

Überprüfen Sie die HTTP-Methode für Ihre Berechtigungsklasse has_permission Methode und wenden Sie Ihre Prüfungen an, wenn es PUT war:

class ExpiringTokenAuthentication(permissions.BasePermission):

    def has_permission(self, request, view):
        if request.method == 'PUT':
           # do it here


class Signup(APIView):
    permission_classes = (BlacklistPermission,)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top