Объект 'NoneType' не имеет атрибута 'id' после переопределения функции validate

Я настроил функцию validate внутри rest_framework_simplejwt так, чтобы при аутентификации пользователя она вызывала сигнал user_logged_in, чтобы я мог видеть, вошел пользователь в систему или нет.

Проблема, с которой я столкнулся, заключается в том, что когда пользователь входит в систему, но вводит неправильные данные для входа, я получаю сообщение об ошибке:

AttributeError at /api/token/
'NoneType' object has no attribute 'id'

Вот полное отслеживание:

Traceback (most recent call last):
  File "C:\Users\15512\anaconda3\lib\site-packages\django\core\handlers\exception.py", line 47, in inner
    response = get_response(request)
  File "C:\Users\15512\anaconda3\lib\site-packages\django\core\handlers\base.py", line 181, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "C:\Users\15512\anaconda3\lib\site-packages\django\views\decorators\csrf.py", line 54, in wrapped_view
    return view_func(*args, **kwargs)
  File "C:\Users\15512\anaconda3\lib\site-packages\django\views\generic\base.py", line 69, in view
    return self.dispatch(request, *args, **kwargs)
  File "C:\Users\15512\anaconda3\lib\site-packages\rest_framework\views.py", line 509, in dispatch
    response = self.handle_exception(exc)
  File "C:\Users\15512\anaconda3\lib\site-packages\rest_framework\views.py", line 469, in handle_exception
\tokens.py", line 176, in for_user
    user_id = getattr(user, api_settings.USER_ID_FIELD)
AttributeError: 'NoneType' object has no attribute 'id'

Вот моя функция валидации :

class CustomTokenObtainPairSerializer(TokenObtainPairSerializer):

    def validate(self, attrs):
        authenticate_kwargs = {
            self.username_field: attrs[self.username_field],
            "password": attrs["password"],
        }
        try:
            authenticate_kwargs["request"] = self.context["request"]
        except KeyError:
            pass
        user = authenticate(**authenticate_kwargs)
        tokens = RefreshToken.for_user(user)
        user_logged_in.send(sender=user.__class__, request=self.context['request'], user=user)

        if not api_settings.USER_AUTHENTICATION_RULE(user):
            raise exceptions.AuthenticationFailed(
                self.error_messages["no_active_account"],
                "no_active_account",
            )

        return {
            'refresh': str(tokens),
            'access': str(tokens.access_token),
            'user': str(user),
        }

Это функция, которая обрабатывает вход/аутентификацию пользователя

Вернуться на верх