1
resposta

Erro na validacao de cpf e na validacao do celular

from validate_docbr import CPF

def cpf_valido(numero_do_cpf):
    cpf = CPF()
    return cpf.validate(numero_do_cpf)
    
def celular_valido(celular):
    padrao = '[0-9]{2} [0-9]{5}-[0-9]{4}'
    resposta = re.findall(padrao, celular)
    return resposta
class ClientesSerializer(serializers.ModelSerializer):

    class Meta:
        model = Clientes
        fields = '__all__'

    def validadores(self, data):
        if not cpf_valido(data['cpf']):
            raise serializers.ValidationError({'cpf': "CPF deve ter 11 digitos"})
        if not celular_valido(data['celular']):
            raise serializers.ValidationError({'celular':"Número ou formato de celular invalido"})
1 resposta

E aí, Renato! Tudo certo?

Vamos lá, dei uma olhada no teu código e percebi alguns pontos que podem estar dando problema.

Importando Módulos: Tá faltando importar o módulo re pra usar expressões regulares no teu código. Faltou colocar um import re lá no começo.

Método validadores: Tá ligado que a função validadores tá dentro do serializer, né? Normalmente, essa lógica costuma ficar no método validate do serializer. Então, o que você pode fazer é renomear esse método validadores para validate e tirar o self dele, porque ele vai receber os dados que você tá tentando validar.

Ficaria algo mais ou menos assim:

import re  # Não esquece de importar isso!

from validate_docbr import CPF

def cpf_valido(numero_do_cpf):
    cpf = CPF()
    return cpf.validate(numero_do_cpf)
    
def celular_valido(celular):
    padrao = '[0-9]{2} [0-9]{5}-[0-9]{4}'
    resposta = re.findall(padrao, celular)
    return resposta

class ClientesSerializer(serializers.ModelSerializer):

    class Meta:
        model = Clientes
        fields = '__all__'

    def validate(self, data):  # Mudança aqui!
        if not cpf_valido(data['cpf']):
            raise serializers.ValidationError({'cpf': "CPF deve ter 11 digitos"})
        if not celular_valido(data['celular']):
            raise serializers.ValidationError({'celular': "Número ou formato de celular invalido"})
        return data  # Não esquece de retornar os dados validados!

Espero que isso ajude a resolver teu problema!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software