微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Django3 ValidationError 不显示

如何解决Django3 ValidationError 不显示

我正在尝试在 Django 中创建用户注册,但是当我输入 2 个错误的密码时,我无法显示验证错误消息。实际上,我检查了 Django 文档,一切似乎都很好。

我刚刚检查了原始来源,但找不到可以像其他字段一样覆盖的错误消息。

views.py 

from django.shortcuts import render,redirect
from  .forms import RegisterForm

from django.contrib.auth.models import User
from django.contrib.auth import login

# Create your views here.

def register (request):
    if request.method == "post":
        form = RegisterForm(request,POST)
        if form.is_valid():
            username = form.cleaned_data.get("username")
            password = form.cleaned_data.get("password")

            newUser = User(username =username)
            newUser.set_password(password)

            newUser.save()
            login(request,newUser)

            return redirect("index")
        context = {
            "form" : form
        }
        return render(request,"register.html",context)


    else:
        form = RegisterForm()
        context = {
            "form" : form
        }
        return render(request,context)

forms.py

from django import forms
from django.core.exceptions import ValidationError

class RegisterForm(forms.Form):
    username = forms.CharField(max_length =50,label = "kullanici adi")
    password = forms.CharField(max_length=20,label = 'parola',widget = forms.PasswordInput)
    confirm = forms.CharField(max_length=20,label= "Parolayi dogrula",widget= forms.PasswordInput)


    def clean(self):
        username = self.cleaned_data.get("username")
        password = self.cleaned_data.get("password")
        confirm = self.cleaned_data.get("confirm")

        if password and confirm and password != confirm :
            raise forms.ValidationError("parola eslesmiyor")

        values = {
            "username" : username,"password" : password
        }

        return values

注册.html

<!DOCTYPE html>

<html lang="en" dir="ltr">
  <head>
    <Meta charset="utf-8">
    <title>login</title>

  </head>
  <body>

    <form method="POST">
      {% csrf_token %}

      {{form.as_p}}
      <br>
      <button type="submit" class="btn btn-danger">Kayit ol</button>
    </form>
  </body>
</html>

解决方法

在 django 模板中:你需要显示

{{form.non_field_errors}}

.

,

尝试返回cleaned_data本身

def clean(self):
    if password and confirm and password != confirm :
        raise forms.ValidationError("parola eslesmiyor")
    return self.cleaned_data
,

您是否尝试过遍历表单错误?您可以查看此答案以获取详细说明:Django Forms: if not valid,show form with error message

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。