Olá Vitor! Tudo bem?
Como você não compartilhou o código que é implementado a validação não consigo lhe apontar se o problema está no código e na forma que você inseriu a informações do telefone ou somente em uma das alternativas.
Mas, levando como ponto de partida que você implementou a sua validação exatamente igual como a desenvolvida durante a aula, o problema da validação está na estrutura de como você passou o número do telefone.
Pois o regex, [0-9]{2} [0-9]{5}-[0-9]{4}
, usado na validação, espera que você passe exatamente a estrutura 85 98765-0908
. Então peço que teste utiliza essa estrutura que compartilhei no seu campo "Celular", porém, caso não resolva, peço que compartilhe todo o seu projeto, via GitHub ou Drive do Google para que eu teste.
No mais, bons estudos!
#VALIDATORS
import re
def cpf_invalido(CPF):
return len(CPF) != 11
def nome_invalido(Nome):
return not Nome.isalpha()
def celular_invalido(Celular):
padrao = f'[0-9]{2} [0-9]{5}-[0-9]{4}'
resposta = re.findall(padrao,Celular)
return not resposta
#SERIALIZERS
class EstudantesSerializer(serializers.ModelSerializer):
class Meta:
model = Estudantes
fields = ['id','Nome','Email','CPF','Data_Nascimento','Celular']
def validate(self,dados):
if cpf_invalido(dados['CPF']):
raise serializers.ValidationError({'CPF':'O CPF deve ter 11 digitos!'})
if nome_invalido(dados['Nome']):
raise serializers.ValidationError({'Nome':'Nome apenas com letras'})
if celular_invalido(dados['Celular']):
raise serializers.ValidationError({'Celular':'Celular com 13 numeros'})
return dados
Bom dia, Vitor! Joia?
Analisando o seu código percebi que o problema na validação está acontecendo porque você deixou o "f" no início da string que a variável padrao
que está na função celular_invalido
.
O "f" no formato que você deixou é uma forma de apontar para o Python que o que estiver dentro de "{}" poderá ser formatado ou será uma variável, mas no seu caso é o valor do regex na identificação de um número de telefone.
Com isso, para solucionar o problema basta retirar o "f". Sua função celular_invalido
deve ficar assim:
def celular_invalido(Celular):
padrao = '[0-9]{2} [0-9]{5}-[0-9]{4}'
resposta = re.findall(padrao,Celular)
return not resposta
Espero que dê tudo certo dessa vez!
Muito obrigado, funcionou perfeitamente, não tinha me atentado a esse detalhe.