【发布时间】:2015-08-27 08:17:19
【问题描述】:
下面是我的forms.py的内容
from django import forms
from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth.models import User
class RegistrationForm(UserCreationForm):
email = forms.EmailField(required=True)
first_name = forms.CharField(max_length=20, required=True)
last_name = forms.CharField(max_length=20, required=True)
class Meta:
model = User
fields = ('username', 'email', 'password1', 'password2', 'first_name', 'last_name')
def save(self, commit=True):
user = super(UserCreationForm, self).save(commit=False)
user.email = self.cleaned_data['email']
user.first_name = self.cleaned_data['first_name']
user.last_name = self.cleaned_data['last_name']
#validation of email id----------
email1 = user.email
(fisrt, second,) = email1.split("@")
(domain, exn,) = second.split(".")
if not domain == "tmail":
raise forms.ValidationError("Domain must be 'tmail'")
if commit:
user.save()
return user
我能够打印表单(包括字段电子邮件、名字和姓氏)并成功注册用户我唯一的问题是,它没有执行验证步骤。 (“#validation of email id----------”下面的代码) 即使域不是“tmail”,它也会接受它而不会引发任何验证错误,然后将用户注册到数据库中。如果您需要更多信息,请帮助并告诉我。
【问题讨论】:
-
使用
clean()方法或email_clean()方法验证电子邮件字段。 -
是我们的
save方法缩进错误吗? -
调试你的代码,实际上包含你的 domain 变量。