如何解决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 举报,一经查实,本站将立刻删除。