Это может быть повторный вопрос, однако я не нашел решения для своей проблемы.
Проблема связана с моей проверкой UserLoginForm. "поднять формы. ValidationError" не работает и не выдает ошибку. Все остальное отлично работает.
Блок проверки моей формы
def clean(self):
cleanedData= super(UserLoginForm, self).clean()
username= cleanedData.get('username')
password = cleanedData.get('password')
if User.objects.filter(username=username).exists() is False:
print("User not available Validation should trigger")
raise forms.ValidationError('User does not exists.')
else:
user = authenticate(username=username, password=password)
if user is None:
print("Authentication Failed Validation should trigger")
raise forms.ValidationError('Invalid Credentials.')
Views.py
def signin(request):
if request.method == 'POST':
form= UserLoginForm(request.POST)
if form.is_valid():
username= str(form.cleaned_data['username']).lower()
password= form.cleaned_data['password']
user= authenticate(username= username, password= password)
if user:
if user.is_active:
login(request, user)
return HttpResponseRedirect(reverse_lazy('testapp:index'))
else:
return HttpResponse('User Not Active')
else:
return HttpResponse('Login Unsuccessful.')
else:
return HttpResponse('Form not valid')
elif request.method == 'GET':
if request.user.is_authenticated:
return HttpResponseRedirect(reverse_lazy('testapp:index'))
else:
form= UserLoginForm()
return render(request, 'signin.html', {'form': form})
HTML Temlplate
{% extends "base.html" %}
{% load static %}
{% block bodyblock %}
<div class="container">
<img src="{% static "images/face.png" %}" alt="image no found">
<div class="heading">
<h1>Login</h1>
</div>
<form action="" method="post" id="signinForm">
{% csrf_token %}
<div class="form-input">
<i class="fas fa-user"></i>
{{ form.username }}
</div>
{% if form.username.errors %}
<span>{{ form.username.errors }}</span>
{% endif %}
<div class="form-input">
<i class="fas fa-lock"></i>
{{ form.password }}
</div>
{% if form.password.errors %}
<span>{{ form.password.errors }}</span>
{% endif %}
{{ form.non_field_errors }}
{{ form.source.errors }}
{{ form.source }}
<div class="form-submit">
<input type="submit" value="Sign In">
</div>
</form>
</div>
{% endblock bodyblock %}
Для отлова ошибок я использую все 3 ({{form.non_field_errors}}, {{form.source.errors}}, {{form.source}}) в своем HTML-шаблоне.
Я могу видеть "Пользователь недоступен, проверка должна сработать" и "Ошибка проверки подлинности должна сработать", но ошибка VailidationError не работает.