type(e)
не возвращает строку.Обратите внимание, что
(<class 'django.contrib.auth.models.User.DoesNotExist'> !=
'django.contrib.auth.models.User.DoesNotExist')
Условие if
должно быть if type(e) == django.contrib.auth.models.User.DoesNotExist
или лучше, if isinstance(e, django.contrib.auth.models.User.DoesNotExist)
Однако правильное решение - использовать несколько except
оговорки
username = 'myuser'
try:
user = User.objects.get(username=username)
print(user)
except User.DoesNotExist:
# do something
print('No such user')
except SomeOtherException:
# do a different thing
except Foo:
# do bar
Обратите внимание, что вы также можете комбинировать обработку разных типов исключений с одним и тем же предложением except
:
try:
# some bad code
except (User.DoesnotExist, SomeOtherException):
# error handling code
Ссылка
1. Python: одна попытка несколько, кроме