поля в моей пользовательской форме регистрации выглядит примерно так:Вернуться сообщение об ошибке в пользовательской формы в Django
<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}}
EDIT
Я использовал ValidationError в forms.py и возвращение raise forms.ValidationError('duplicate email')
, если адрес электронной почты существует. Как показать эту ошибку в пользовательской форме?
Да, я сделал это. Но как мне вернуть эту ошибку в мою форму? – Maxsteel
Если метод верен, он будет отображаться в '{{form.email.errors}}'. Это просто полевая ошибка. Было бы полезно, если бы вы поделились своим * forms.py * – rnevius
Я просто поделился им. Взгляни, пожалуйста? – Maxsteel