1
resposta

Cadastro efetuado mesmo com espaços em branco

Olá, a validação de espaço em branco em cadastro não funciona. Já revirei o projeto finalizado mas não encontro o erro. Mesmo fazendo um cadastro com. Continuando o curso, verifiquei que a validação das senhas no form também não funciona.

Código HTML:

                    <form action="{% url 'cadastro' %}" method="POST">
                        {% csrf_token %}
                        <div class="row">
                            {% for field in form.visible_fields %}
                            <div class="col-12 col-lg-12" style="margin-bottom: 10px;">
                                <label for="{{ field.id_for_label }}" style="color:#D9D9D9; margin-bottom: 5px;">{{field.label}}</label>
                                {{ field }}
                            </div>
                            {% for error in field.errors %}
                            <div>
                                {{error}}
                            </div>
                            {% endfor %}
                            {% endfor %}
                        </div>
                        <div>
                            <button type="submit" class="btn btn-success col-12" style="padding: top 5px;">Cadastrar</button>
                        </div>
                    </form>

Código do form.py:


    def clean_nome_cadastro(self):
        nome = self.cleaned_data.get('nome_cadastro')

        if nome:
            nome = nome.strip()
            if ' ' in nome:
                raise forms.ValidationError('Espaços não são permitidos nesse campo')
            else:
                return nome
                
                            
    def clean_senha_2(self):
        senha_1 = self.cleaned_data.get("senha_1")
        senha_2 = self.cleaned_data.get("senha_2")

        if senha_1 and senha_2:
            if senha_1 != senha_2:
                raise forms.ValidationError("Senhas não são iguais")
            else:
                return senha_2
1 resposta

Olá, Tiago

Primeiramente, sobre o problema de espaços em branco, o método strip() remove espaços no início e no fim da string, mas não remove espaços no meio. Se você quiser impedir espaços em qualquer parte da string, pode usar o método replace(). Veja o exemplo:

def clean_nome_cadastro(self):
    nome = self.cleaned_data.get('nome_cadastro')

    if nome:
        nome = nome.replace(' ', '')
        return nome

Agora, sobre a validação de senhas, o código parece estar correto. No entanto, é importante lembrar que a validação ocorre apenas quando o formulário é submetido. Se você está testando a validação sem submeter o formulário, pode não ver o erro. Além disso, certifique-se de que está chamando o método is_valid() em algum lugar do seu código para que a validação seja realmente executada.

Por fim, é sempre uma boa prática verificar se os campos estão realmente sendo preenchidos. Você pode adicionar um else em ambos os métodos para lançar um erro quando os campos estiverem vazios:

def clean_nome_cadastro(self):
    nome = self.cleaned_data.get('nome_cadastro')

    if nome:
        nome = nome.replace(' ', '')
        return nome
    else:
        raise forms.ValidationError('Este campo é obrigatório')

def clean_senha_2(self):
    senha_1 = self.cleaned_data.get("senha_1")
    senha_2 = self.cleaned_data.get("senha_2")

    if senha_1 and senha_2:
        if senha_1 != senha_2:
            raise forms.ValidationError("Senhas não são iguais")
        else:
            return senha_2
    else:
        raise forms.ValidationError('Este campo é obrigatório')

Espero ter ajudado e bons estudos!