【发布时间】:2015-08-13 22:34:16
【问题描述】:
我的自定义注册表单中的字段如下所示:
<div class="form-group">
{{ form.email.errors }}
label for="{{form.email.id_for_label}}">
<b>Email</b>
</label>
{{ form.email }}
</div>
我的 views.py 看起来像这样:
def registration(request):
registered = False
if request.method == 'POST':
form = RegForm(data=request.POST)
if form.is_valid():
email = form.cleaned_data['email']
phone = form.cleaned_data['phone']
password = form.cleaned_data['password']
password2 = form.cleaned_data['password2']
user = User()
user.email = email
user.username = email
user.is_active = False
user.set_password(password)
user.save()
return render(request, 'appname/index.html', {'registered': True})
else:
form = RegForm()
render(request, 'appname/index.html', {'form': form})
forms.py:
class RegForm(forms.Form):
email = forms.EmailField(error_messages={'required': 'Please enter your Email ID'})
password=forms.CharField(widget=forms.PasswordInput())
password2=forms.CharField(widget=forms.PasswordInput())
phone= forms.CharField(label="Mobile Number",max_length=10)
#clean email field
def clean_email(self):
email = self.cleaned_data["email"]
try:
User._default_manager.get(email=email)
except User.DoesNotExist:
return email
raise forms.ValidationError('duplicate email')
假设数据库中已经存在电子邮件,如何将错误消息返回到自定义表单并显示它以代替{{form.email.errors}}
编辑
我在 forms.py 中使用了 ValidationError 并返回 raise forms.ValidationError('duplicate email') 如果电子邮件存在。如何在自定义表单中显示此错误?
【问题讨论】:
标签: python django forms django-models django-forms