Я пытаюсь реализовать аутентификацию с использованием токена jwt с использованием фреймворка djangorest, но получаю ошибку утверждения

#django-rest-framework

#django-rest-framework

Вопрос:

Ошибка утверждения: ‘LoginView’ должен либо включать атрибут serializer_class, либо переопределять метод get_serializer_class()

Вот класс кода LoginView (GenericAPIView):

 def post(self, request):
    data = request.data
    username = data.get('username', '')
    password = data.get('password', '')
    user = auth.authenticate(username=username, password=password)
    if user:
        auth_token = jwt.encode({'username': user.username}, settings.JWT_SECRET_KEY)
        serializer = UserSerializer(user)
        data = {'user': serializer.data, 'token': auth_token}
        return Response(data, status=status.HTTP_200_OK)
    return Response({'detail': 'Invalid credential'}, status=status.HTTP_401_UNAUTHORIZED)
 

Комментарии:

1. Даже если я изменю serializer = UserSerializer(user) data = {‘user’: serializer.data, ‘token’: auth_token} на serializer_class = UserSerializer(user) data = {‘user’: serializer_class.data, ‘token’: auth_token}, это все равно не сработает

2. Это serializer_class = UserSerializer просто имя класса и post используемое serializer = self.get_serializer(data=request.data) . И на самом деле этот сериализатор должен иметь username и password . Поэтому вам лучше создать a UserLoginSerializer с этими полями.