【发布时间】:2020-12-16 18:29:57
【问题描述】:
我有一个用于创建新用户的表单,我添加了clean_email 函数来检查电子邮件地址是否已经存在,如下所示:
class NewUserForm(ModelForm):
class Meta:
model = Student
fields = '__all__'
def clean_email(self):
email = self.cleaned_data.get('email')
try:
match = User.objects.get(email = email)
except User.DoesNotExist:
return email
raise forms.ValidationError('User with this email address already exists.')
不幸的是,在我尝试通过尝试使用已存在的电子邮件地址注册用户来测试这一点后,我在浏览器中收到 This page isn't working 错误。我不知道为什么会这样,有人可以帮忙吗?
编辑:我弄清楚了问题所在,现在它可以工作了。它不允许我使用重复的电子邮件地址创建用户,但如何在网站上显示错误消息?
Edit_2:查看代码
form = NewUserForm(request.POST)
if form.is_valid():
data = form.cleaned_data
else:
form = NewUserForm()
return redirect('newuserpage')
【问题讨论】:
-
您是复制/粘贴代码还是手动输入?
__all__应该是字符串。 -
我复制粘贴了它,但它是我代码中的一个字符串,不知道这是怎么发生的。
-
我一定是做错了什么,我查看了文档,但仍然无法显示错误消息。
-
别担心。这只是需要在你的大脑中连接的东西。请记住,模板无法呈现它不知道的内容。没有神奇的视图/模板连接,模板中的所有变量都有可以定位的源(视图、generic.base.ContextMixin 和上下文处理器是主要来源)。
标签: python python-3.x django django-models django-forms