Как мне поймать / кроме ошибок регистрации с Django? - PullRequest
2 голосов
/ 02 декабря 2011

Я хочу иметь возможность вернуть сообщение пользователю, когда он пытается зарегистрироваться, но его регистрация не удалась.Я попробовал все следующие методы:

  try:
    user = User.objects.create_user(username, email, password)
  except User.DoesNotExist
    print "aaaa"

  try:
    user = User.objects.create_user(username, email, password)
  except IntegrityError
    print "aaaa"

Конечно, ни один из вышеперечисленных не работает.Как правильно сгенерировать исключение?

Ответы [ 2 ]

0 голосов
/ 02 декабря 2011

У меня была такая же проблема некоторое время назад, вот мое решение:

try:
    user = User.objects.get(username=new_username)
    # ERROR! user already exists!
    # if you're using a form you could do:
    # raise forms.ValidationError('Already exists a user with this username!')        
except User.DoesNotExist:
    # We're good!, lets create the user
    user = User.objects.create_user(username, email, password)
0 голосов
/ 02 декабря 2011

Я бы предложил использовать The Messages Framework .

Кроме того, я не могу себе представить создание пользователя, выдающего DoesNotExist.Сама идея в том, что пользователя не существует, поэтому, если его выбросят, возникают некоторые серьезные проблемы.

Имейте в виду также, что бэкэнд по умолчанию для структуры сообщений - это хранение сообщений в сеансе,который не будет работать для регистрации (так как ни один пользователь не вошел в систему), поэтому я бы посоветовал заглянуть в один из других бэкэндов.

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