Отображение ошибок формы в разных стилях. Django
Как я могу обратиться к конкретной ошибке класса ValidationError. Я сделал форму регистрации, где хочу, чтобы ошибка "Требуемое поле" отображалась просто со значком "*", а ошибка "Такой E-mail уже существует!". Как шаблон обращается к конкретной ошибке валидации? Какой код должен быть в ValidationError? Я новичок в Django, не судите строго
forms.py:
class registerForm(UserCreationForm):
username = CharField( widget = TextInput(attrs={'class': 'form-control'}))
first_name = CharField( widget = TextInput(attrs={'class': 'form-control'}), max_length=32)
email = EmailField( widget = EmailInput(attrs={'class': 'form-control'}), max_length=64)
password1 = CharField( widget = PasswordInput(attrs={'class': 'form-control'}))
password2 = CharField( widget = PasswordInput(attrs={'class': 'form-control'}))
class Meta(UserCreationForm.Meta):
model = User
fields = UserCreationForm.Meta.fields + ('first_name', 'last_name', 'email',)
def clean_email(self):
email = self.cleaned_data['email']
if get_user_model().objects.filter(email=email).exists():
raise forms.ValidationError("Такой E-mail уже существует!", code='error1')
return email
views.py:
class Register(View):
def get(self, request):
list = User.objects.all()
if request.method =='GET':
form = registerForm(request.GET)
if form.is_valid():
form.save()
user = User.objects.get(username = str(form.cleaned_data['username']))
group = Group.objects.get(name='regular')
user.groups.add(group)
return redirect('login')
else:
form = registerForm()
data = {
'list': list,
'form': form,
}
return render(request, "registration/register.html", data)
def post(self, request):
list = User.objects.all()
if request.method =='POST':
form = registerForm(request.POST)
if form.is_valid():
form.save()
user = User.objects.get(username = str(form.cleaned_data['username']))
group = Group.objects.get(name='regular')
user.groups.add(group)
return redirect('login')
else:
form = registerForm()
data = {
'list': list,
'form': form,
}
return render(request, "registration/register.html", data)
register.html:
<div class="mt-3 mb-4 logForm">
<h3 class="text-h1 font-color text-center pt-2">Регистрация</h3>
<form class="mt-3 justify-content-center" name="login_form" id="login_form" method="post" action="{% url 'register' %}">
{% csrf_token %}
<div class="mb-3 inputBox">
<label for="exampleInputEmail1" class="text-h2 font-color">Псевдоним:</label>
{{ form.first_name }}
<div class="valid">{{ form.first_name.errors }}</div>
</div>
<div class="mb-3 inputBox">
<label for="exampleInputEmail1" class="text-h2 font-color">Логин:</label>
{{ form.username }}
<div class="valid">{{ form.username.errors }}</div>
</div>
<div class="mb-3 inputBox">
<label for="exampleInputPassword1" class="text-h2 font-color">Email:</label>
{{ form.email }}
<div class="valid">{{ form.email.errors }}</div>
</div>
<div class="mb-3 inputBox">
<label for="exampleInputPassword1" class="text-h2 font-color">Пароль:</label>
{{ form.password1 }}
<div class="valid">{{ form.password1.errors }}</div>
</div>
<div class="mb-3 inputBox">
<label for="exampleInputPassword1" class="text-h2 font-color">Повтор пароля:</label>
{{ form.password2 }}
<div class="valid">{{ form.password2.errors }}</div>
</div>
<div class="d-flex justify-content-center">
<div class="mb-3">
<button type="submit" class="btn btn-dark mt-1" value="login">Зарегестрироваться</button>
</div>
</div>
</form>
</div>