@Vlad1987
учу Python

Почему появляется DoesNotExist во время регистрации пользователя?

Добрый день!

Я тут решил исключительно при помощи того, что я уже знаю самостоятельно, написать проверку при регистрации пользователя, которая бы в случае наличия логина в базе говорила пользователю, что такой логин уже занят.
Проверяю на логине admin и всё работает, выводится соответствующее сообщение, но когда я пытаюсь зарегистрировать пользователя с любым другим логином получаю ошибку:
Exception Type: DoesNotExist
Exception Value: User matching query does not exist

На сколько я понимаю, это связано с тем, что
User.objects.get(username=request.POST['username'])
не находит соответствующее вхождение в базе и это логично, его там и не может быть.
А вот чего я не могу понять, так это почему вообще django лезет в это условие, если if form.is_valid(): уже выполненно.

Вот сама вьюха с регистрацией и проверкой:

def register(request):
    if request.method == 'POST':
        form = UserCreationForm(request.POST)
        if form.is_valid():
            form.save()
            messages.success(request, 'You have been successfully registered')
            return redirect('login')
        elif User.objects.get(username=request.POST['username']): 
            messages.warning(request, 'Username already exists')
        else:
            messages.error(request, 'Register Error')
    else:
        form = UserCreationForm()
    return render(request, 'news/register.html', {'form':form})


Заранее большое спасибо!
  • Вопрос задан
  • 159 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы