1
resposta

[Bug] O metodo clean_<fieldname> não está funcionando para mim

Pesquisei o problema na internet ou no fórum e não consegui uma solução, inclusive copiei o exato código do github da alura e não consegui replicar de forma correta.

link do gihub: https://github.com/MarcosVitorTn/alura-space/tree/main/usuarios

pelos meus teste o método clean não está sendo chamado após o form.is_valid.

Insira aqui a descrição dessa imagem para ajudar na acessibilidadeInsira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta

Olá, Marcus! Tudo bem?

Analisando o arquivo views.py, mais especificamente no método cadastro em que você usa aquela validação do formulário, notei que a validação da senha não é feita corretamente pelo formulário, nesse caso você pode adicionar a validação diretamente no na view para que funcione corretamente:

def cadastro(request):
    form = CadastroForms()

    if request.method == 'POST':
        form = CadastroForms(request.POST)

        if form.is_valid():
            if form['senha1'].value() != form['senha2'].value():
                messages.error(request, 'Senhas não são iguais')
                return redirect('cadastro')
            
            nome = form['nome_cadastro'].value()
            email = form['email'].value()
            senha = form['senha_1'].value()

            if User.objects.filter(username=nome).exists():
                messages.error(request, 'Usuário já existente')
                return redirect('cadastro')

            usuario = User.objects.create_user(
                username=nome,
                email=email,
                password=senha
            )

            usuario.save()
            messages.success(request, 'Cadastro efetuado com sucesso!')
            return redirect('login')

    return render(request, 'usuarios/cadastro.html', {'form': form})

Espero ter ajudado e bons estudos!

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