1
resposta

problemas de identação no codigo validate em cliente.serializers

Estou com este problema no método validate em cliente.serializers

def validate(self,data):
    if not cpf_valido(data['cpf']):
        raise serializers.ValidationError({'cpf':"CPF deve conter 11 dígitos!"})
    return data
    if nome_valido(data['nome']):
        raise serializers.ValidationError({'nome':"Nome deve conter apenas letras!"})
    return data
    if not rg_valido(data['rg']):
        raise serializers.ValidationError("RG deve ter 9 dígitos!")
    return data
    if not celular_valido(data['celular']):
        raise serializers.ValidationError("Celular deve ter 11 dígitos!")
    return data

O vs code nao reconhece o codigo apartir da função 'nome_valido' .

1 resposta

Olá, Jaiane! Como vai?

O problema ocorre porque você está usando várias declarações return dentro do método validate. Quando uma declaração return é executada, a função é encerrada e o código abaixo dela não é executado. Portanto, todas as declarações return após a primeira não serão executadas.

Para resolver esse problema, você pode reorganizar seu código para que todas as validações sejam feitas antes de retornar os dados. Algo assim:

def validate(self, data):
    if not cpf_valido(data['cpf']):
        raise serializers.ValidationError({'cpf': "CPF deve conter 11 dígitos!"})
    
    if not nome_valido(data['nome']):
        raise serializers.ValidationError({'nome': "Nome deve conter apenas letras!"})
    
    if not rg_valido(data['rg']):
        raise serializers.ValidationError("RG deve ter 9 dígitos!")
    
    if not celular_valido(data['celular']):
        raise serializers.ValidationError("Celular deve ter 11 dígitos!")
    
    return data

Dessa forma, todas as validações serão feitas e, se alguma delas falhar, uma exceção será lançada. Caso contrário, os dados serão retornados.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.