Django DRF - Невозможно изменить пароль пользователя, так как пользователь при запросе - None

В моем приложении есть конечная точка для изменения пароля пользователя с помощью Django rest framework (DRF). В настоящее время я сталкиваюсь со следующей ошибкой при попытке изменить пароль пользователя:

File "/App/App_API/serializers.py", line 32, in validate_old_password
     if not user.check_password(value):
 AttributeError: 'NoneType' object has no attribute 'check_password'
 [1

urls.py

re_path(r'^api/v1/user/change_password$', API_Views.change_password, name='api_change_password'),

views.py

@api_view(['GET', 'POST'])
@authentication_classes([JSONWebTokenAuthentication])
@permission_classes([IsAuthenticated])
def change_password(request):
    if request.method == 'POST':
        serializer = ChangePasswordSerializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        user = serializer.save()
        # if using drf auth_token, create a new token
        if hasattr(user, 'auth_token'):
            user.auth_token.delete()
        token, created = Token.objects.get_or_create(user=user)
        # return new token
        return Response({'token': token.key}, status=status.HTTP_200_OK)

serializers.py

class ChangePasswordSerializer(serializers.Serializer):
    old_password = serializers.CharField(max_length=128, write_only=True, required=True)
    new_password1 = serializers.CharField(max_length=128, write_only=True, required=True)
    new_password2 = serializers.CharField(max_length=128, write_only=True, required=True)

    def validate_old_password(self, value):
        user = None
        request = self.context.get("request")
        if request and hasattr(request, "user"):
            user = request.user
        if not user.check_password(value):
            raise serializers.ValidationError(
                _('Your old password was entered incorrectly. Please enter it again.')
            )
        return value

    def validate(self, data):
        if data['new_password1'] != data['new_password2']:
            raise serializers.ValidationError({'new_password2': _("The two password fields didn't match.")})
        password_validation.validate_password(data['new_password1'], self.context['request'].user)
        return data

    def save(self, **kwargs):
        password = self.validated_data['new_password1']
        user = self.context['request'].user
        user.set_password(password)
        user.save()
        return user

Мне кажется, что объект пользователя в сериализации просто = None. Это снова приводит к вопросу, почему пользователь не присутствует в запросе? Любая идея

Заранее спасибо

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