Django: Почему мой код позволяет пользователю создать новую учетную запись с адресом электронной почты, который уже был занят? - PullRequest
0 голосов
/ 16 декабря 2018

Когда я удаляю следующее

user = User.objects.get(username=request.POST['username'])

, он распознает, использует ли пользователь принятый адрес электронной почты при регистрации, и показывает пользователю ошибку регистрации.Однако приведенный ниже код не выдает никакой ошибки на принятом адресе электронной почты.Как я могу это исправить?

def signup(request):
 if request.method == "POST":
    # User has info and wants an account now!
    if request.POST['password1'] == request.POST['password2']:
        try:
            user = User.objects.get(username=request.POST['username'])
            email = User.objects.get(email=request.POST['email'])
            return render(request, 'accounts/signup.html', {'error': 'Email and or username has already been taken'})
        except User.DoesNotExist:
            user = User.objects.create_user(request.POST['username'], email=request.POST['email'], password=request.POST['password1'])
            auth.login(request, user)
            return redirect('homepage')
    else:
        return render(request, 'accounts/signup.html', {'error': 'Passwords must match'})
 # User wants to enter info
 return render(request, 'accounts/signup.html')

1 Ответ

0 голосов
/ 16 декабря 2018

Пожалуйста, замените except User.DoesNotExist: на except ObjectDoesNotExist:.См. Определение get () в django, используя эту ссылку .

Но перед этим вам также необходимо импортировать исключение:

from django.core.exceptions import ObjectDoesNotExist
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...