这是我的观点:
if request.method == 'POST':
form = TeacherRegister(request.POST)
#Gets school object from email domain.
email = form['email'].value().split('@')[1]
try:
school = School.objects.get(email_domain = email)
except ObjectDoesNotExist:
#add custom error message here
if form.is_valid():
user, Teacher = form.save()
Teacher.school = school
Teacher.save()
user.groups.add(Group.objects.get(name='Teacher'))
#user.is_active to stop users logging in without confirming their emails
user.is_active = False
user.save()
#Sends confirmation link.
send_confirmation_email(request, user)
args = {'email': user.email,
'link': user.Teacher.school.email_website}
return render(request, 'email/token_sent.html', args)
else:
args = {'form': form,}
return render(request, 'users/teachers.html', args)
这些行是我正在尝试处理的内容:
email = form['email'].value().split('@')[1]
try:
school = School.objects.get(email_domain = email)
except ObjectDoesNotExist:
#add custom error message here
这是我的电子邮件字段的 HTML:
<div class="required field" >
{{ form.email.label }}
{{ form.email }}
{{ form.email.help_text }}
<!-- <label>Email</label>
<input placeholder="Email" type="email" name="email" autofocus="" required="" id="id_email"> -->
</div>
如果没有返回学校对象,我该如何表达“未找到学校,请检查您的电子邮件”之类的内容?
Thanks
您需要在表单端执行验证。
实施clean_email https://docs.djangoproject.com/en/2.0/ref/forms/validation/#cleaning-a-specific-field-attribute方法的形式:
def clean_email(self):
email = self.cleaned_data.get('email')
email = email.split('@')[1]
try:
school = School.objects.get(email_domain = email)
except ObjectDoesNotExist:
raise forms.ValidationError(''School not found, check your email')
return email
现在在模板中,您可以在之后立即显示此错误email
field:
{{ form.email.label }}
{{ form.email }}
{{ form.email.errrors }}
{{ form.email.help_text }}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)