Django 键入对象';模型形式';没有属性';验证错误';
我正在尝试创建一个注册表(使用Django ModelForm),在这里我想验证“密码”和确认密码是否匹配。我尝试使用raise ValidationError,但出现了一个错误 类型对象“ModelForm”没有属性“ValidationError” 验证密码的正确方法应该是什么?下面是我的代码: models.py:Django 键入对象';模型形式';没有属性';验证错误';,django,django-forms,Django,Django Forms,我正在尝试创建一个注册表(使用Django ModelForm),在这里我想验证“密码”和确认密码是否匹配。我尝试使用raise ValidationError,但出现了一个错误 类型对象“ModelForm”没有属性“ValidationError” 验证密码的正确方法应该是什么?下面是我的代码: models.py: from django.db import models class Students(models.Model): firstName = models.CharF
from django.db import models
class Students(models.Model):
firstName = models.CharField(max_length=120)
lastName = models.CharField(max_length=120)
# studentID = models.IntegerField(null=False)
email = models.EmailField()
password = models.CharField(max_length=120, default="")
password2 = models.CharField(max_length=120, default="")
street = models.CharField(max_length=120)
apt = models.IntegerField(blank=True, null=True)
city = models.CharField(max_length=120)
state = models.CharField(max_length=120)
zipcode = models.IntegerField(null=False)
def __str__(self):
return self.firstName
class Meta:
verbose_name_plural = "Students"
forms.py:
from django.forms import ModelForm
from django.utils.translation import gettext_lazy as _
from .models import Students
class StudentRegisterForm(ModelForm):
class Meta:
model = Students
fields = [
'firstName', 'lastName',
'email', 'password', 'password2',
'street', 'apt', 'city', 'state', 'zipcode',
]
labels = {
'firstName': _('First Name'),
'lastName': _('Last Name'),
'password2': _('Confirm Password'),
'Apt': _('Apt/House'),
'zipcode': _('Zip Code'),
}
def clean(self):
data = self.cleaned_data
password = self.cleaned_data.get('password')
print(password)
password2 = self.cleaned_data.get('password2')
if password2 != password:
raise ModelForm.ValidationError("Passwords must match!")
return data
Views.py:
from django.http import HttpResponseRedirect
from django.shortcuts import render
from .models import Students
from .forms import StudentRegisterForm
def student_register(request):
register_form = StudentRegisterForm(request.POST or None)
context = {
"title": "Welcome to the registration page",
"register_form": register_form
}
if register_form.is_valid():
register_form.save()
return render(request, 'students/register.html', context)
我对编程相当陌生,所以请尝试解释我哪里出了问题,正确的方法是什么。谢谢 ValidationError不是ModelForm的属性
from django.forms import ModelForm, ValidationError
....
raise ValidationError("Passwords must match!")
或者更好:
from django import forms
class StudentRegisterForm(forms.ModelForm):
...
raise forms.ValidationError("Passwords must match!")
ValidationError不是ModelForm的属性
from django.forms import ModelForm, ValidationError
....
raise ValidationError("Passwords must match!")
或者更好:
from django import forms
class StudentRegisterForm(forms.ModelForm):
...
raise forms.ValidationError("Passwords must match!")
该错误至少是由ValidationError位于django.core.exceptions中这一事实引起的。该错误至少是由ValidationError位于django.core.exceptions中这一事实引起的。