Ошибки в полях Django не отображаются
Вот мой forms.py код:
from .models import User
class userRegistrationForm(forms.ModelForm):
password = forms.CharField(widget = forms.PasswordInput())
confirm_password = forms.CharField(widget = forms.PasswordInput())
class Meta:
model = User
fields = ['first_name', 'last_name', 'username', 'email','password'] ```
Here is my views.py code:
```
def registerUser(request):
if request.method == 'POST':
print(request.POST) #request.POST, WE ARE GETTING THE DATA HERE.
form = userRegistrationForm(request.POST)
if form.is_valid():
# CREATE THE USER, USING THE FORM
# password = form.cleaned_data['password']
# user = form.save(commit=False) #FORM IS READY TO BE SAVED, BUT NOT YET SAVED. BCZ OF COMMIT
# user.role = User.CUSTOMER
# user.set_password(password)
# user.save()
# CREATE THE USER, USING create_user METHOD.
first_name = form.cleaned_data['first_name']
last_name = form.cleaned_data['last_name']
email = form.cleaned_data['email']
username = form.cleaned_data['username']
password = form.cleaned_data['password']
user = User.objects.create_user(first_name=first_name, last_name=last_name, username=username, email=email, password=password)
user.role = User.CUSTOMER
user.save()
#print("User is created")
return redirect('registerUser')
else:
print("Invalid form")
print(form.errors)
else:
form = userRegistrationForm()
form = userRegistrationForm()
context = {
'form':form
}
return render(request, 'accounts/registerUser.html', context)
Вот мой registerUser.html код:
<ul class="errorlist">
{% for field in form %}
{% if field.errors %}
{% for error in field.errors %}
<li style="color: red;">{{error}}</li>
{% endfor %}
{% endif %}
{% endfor %}
</ul>
Технически моя ошибка должна быть показана здесь красным цветом:
[enter image description here][1]
[1]: https://i.sstatic.net/2fVh2q4M.png
Но он не отображается, ошибки отображаются в моем терминале, но не на html-странице. Я изо всех сил пытаюсь понять причину ошибки. Кто-нибудь может помочь мне устранить эту проблему? В руководстве, которому я следую, он делает то же самое, что и я, но его ошибки заметны.
Вы создаете новую форму, когда проверка формы завершилась неудачно, поэтому ошибок больше нет:
def registerUser(request):
if request.method == 'POST':
form = userRegistrationForm(request.POST, request.FILES)
if form.is_valid():
first_name = form.cleaned_data['first_name']
last_name = form.cleaned_data['last_name']
email = form.cleaned_data['email']
username = form.cleaned_data['username']
password = form.cleaned_data['password']
user = User.objects.create_user(
first_name=first_name,
last_name=last_name,
username=username,
email=email,
password=password,
)
user.role = User.CUSTOMER
user.save()
return redirect('registerUser')
else:
print('Invalid form')
print(form.errors)
else:
form = userRegistrationForm()
# no form = userRegistrationForm()
context = {'form': form}
return render(request, 'accounts/registerUser.html', context)