я получил следующую ошибку ДжангоКак можно django пройти через DoNotExist, а затем поднять «Duplicate entry»?
File "./project/auth_backend.py", line 31, in authenticate
user.save()
...
IntegrityError: (1062, "Duplicate entry 'user_name' for key 'username'")
Указанный файл содержит следующий код (который основан на https://docs.djangoproject.com/en/1.8/topics/auth/customizing/#writing-an-authentication-backend)
try:
user = User.objects.get(username=username)
except User.DoesNotExist:
user = User(username=username, password=password)
...
user.save()
Кажется, что так или иначе он поднял User.DoesNotExist, даже если он на самом деле делает существовать. Моя база данных - это MySQL.
Я видел других с подобной проблемой, но в отличие от них я не использую кэширование базы данных.
Вы пытались создать «Пользователь» с помощью документированного метода 'create_user'? 'user = User.objects.create_user ('john', '[email protected]', 'johnpassword')' :: https://docs.djangoproject.com/en/1.9/topics/auth/default/#user -объекты – Hybrid
Эта проблема возникает всегда или только иногда? Пожалуйста, покажите все функции 'authenticate'. –
@hybrid Я еще не пробовал. Насколько отличается от моего текущего кода? Обратите внимание, что в этом примере я не думаю, что в первую очередь это должно было вызвать User.DoesNotExist, что означает, что если он ведет себя правильно, он не достигнет части создания пользователя. – Dynameyes