在我的自定义登记表中的字段看起来是这样的:返回错误消息,自定义表单
<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}}
编辑
我已经使用ValidationError在forms.py和返回raise forms.ValidationError('duplicate email')
如果电子邮件存在。如何在自定义表单中显示此错误?
是的,我做到了。但是,如何将该错误返回给我的表单? – Maxsteel
如果方法正确,它将显示在'{{form.email.errors}}'中。这只是一个现场错误。如果您分享了我刚刚分享的* forms.py * – rnevius
,这将有所帮助。请看一下? – Maxsteel