forms.errors
загорелась, но в конце вы объявляете новую форму form = UserCreationForm()
как раз перед тем, как визуализировать свой вид.
После проверки, является ли form
действительным или нет, все ваши ошибки проверки находятся внутри form
экземпляра, запомните процессы, запущенные как последовательность, в конце вы уничтожите переменную form
с помощью form = UserCreationForm()
так что ошибок проверки больше нет.
Что вы можете сделать, это добавить эту новую форму form = UserCreationForm()
в оператор else, когда ваш метод запроса GET
, чтобы сохранить пустую форму. Добавляя оператор else
, вы избегаете нового назначения формы; после процесса проверки он перейдет к render(request,....)
с экземпляром form
, содержащим все ошибки проверки
if request.method == 'POST':
form = UserCreationForm(request.POST)
if form.is_valid():
form.save()
username = form.cleaned_data.get('username')
password = form.cleaned_data.get('password2')
user = authenticate(username=username, password=password)
login(request, user)
return HttpResponseRedirect('/')
else:
print(form.errors)
<b>else:</b>
<b>form = UserCreationForm()</b>
return render(request, 'registration/register.html', {'form': form})
Обратите внимание, правильный вызов для ошибок формы в шаблонах - form.errors
с с , а не form.error
<s>{% if form.error %}</s> <b>{% if form.errors %}</b>