Django rest_framework, отключить аутентификацию и разрешение в конкретном методе - PullRequest
0 голосов
/ 06 декабря 2018

У меня есть класс с именем UserViewSet:

class UserViewSet(viewsets.ModelViewSet):
    queryset = UserData.objects.all()
    serializer_class = UserSerializer
    from rest_framework.permissions import IsAuthenticated
    from rest_framework.authentication import TokenAuthentication
    permission_classes = (IsAuthenticated,)
    authentication_classes = (TokenAuthentication,)

    @action(methods=['post'], detail=False)
    def signup_user(self, request):
        request_data = request.query_params
        if len(request_data) == 0:
            return Response("Empty params !")

Теперь я хочу зарегистрировать нового пользователя, и это вызовет эту ошибку:

{"detail":«Учетные данные аутентификации не были предоставлены».}

Это из-за классов Authentication и Permission.

Итак, как правильно отключить эти классы в функции signup?

Я использовал декораторы authentication_classes и permission_classes , но это не влияет на этофункция.

1 Ответ

0 голосов
/ 06 декабря 2018

Декоратор action позволяет указывать классы разрешений для действий.Это должно сделать:

    @action(methods=['post'], detail=False, permission_classes=[AllowAny])
    def signup_user(self, request):
        # ...

(не забудьте импортировать AllowAny)

...