1
resposta

Mensagens de Erro (Validação de formulário)

Bom dia,

Estou com uma dificuldade em fazer a mensagem de erro aparecer no formulário. Por exemplo:

forms.py

class PasswordForm(forms.ModelForm):

    password=forms.CharField(widget=forms.PasswordInput())
    confirm_password=forms.CharField()

    class Meta:
        model=User
        fields=['password']

    def clean(self):
        cleaned_data = super(PasswordForm, self).clean()
        password = cleaned_data.get("password")
        confirm_password = cleaned_data.get("confirm_password")

        if password != confirm_password:
            raise forms.ValidationError(
                "password and confirm_password does not match"
            )

views.py

def reset_password(request):

    user_id = request.user.id
    user = User.objects.get(id=user_id)

    context = {
        'form': PasswordForm()
    }

    if request.method == 'POST':
        form = PasswordForm(request.POST, instance=request.user)
        if form.is_valid():
            password = form.cleaned_data['password']
            user.set_password(password)
            user.save()
            return redirect('panel.profile')

        context = {
            'form': form
        }

    return render(request, 'panel/auth/reset_password.html', context)

reset_password.html

{% if form.errors %}
    <div class="alert alert-danger">
        <strong>{{ form.non_field_errors }}</strong>
    </div>
{% endif %}

Gostaria que aparece aquela mensagem: "password and confirm_password does not match" que eu configurei acima caso as senhas não conferissem. Mas não estou sabendo fazer isso.

Agradeço desde já a ajuda de vocês

1 resposta

Qual versão do Django você esta usando? Olhando seu código parece que esta tudo OK. Ou é bug no código que não enxerguei, bug na versão do Django ou incompatibilidade do código.

No aguardo da sua resposta.

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