Ответ 1
Спасибо, я нашел, правильные настройки для моей задачи:
ACCOUNT_AUTHENTICATION_METHOD = 'email'
ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_UNIQUE_EMAIL = True
ACCOUNT_USERNAME_REQUIRED = False
Когда django-registration не поддерживает django 1.5 и пользовательскую модель пользователя. Я пытаюсь использовать django-allauth, с первого взгляда это отличный продукт.
Проблема у меня есть - поле имени пользователя, но в моем приложении у меня нет имени пользователя. Итак, в документации allauth говорится:
**Available settings:**
ACCOUNT_AUTHENTICATION_METHOD (="username" | "email" | "username_email")
Задает метод входа в систему - вводит ли пользователь вход, введя его имя пользователя, адрес электронной почты или один из них.
Хорошо, я сделал и получил ошибку:
AssertionError at /accounts/signup/
No exception supplied
models.py:
class MyUser(AbstractBaseUser, PermissionsMixin):
title = models.CharField ('Name', max_length=100)
email = models.EmailField('Email', max_length=255, unique=True)
...
settings.py
ACCOUNT_USERNAME_REQUIRED = False
ACCOUNT_AUTHENTICATION_METHOD = ('email')
AUTH_USER_MODEL = 'internboard.MyUser'
Что я делаю неправильно?
Спасибо, я нашел, правильные настройки для моей задачи:
ACCOUNT_AUTHENTICATION_METHOD = 'email'
ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_UNIQUE_EMAIL = True
ACCOUNT_USERNAME_REQUIRED = False
Если вы столкнулись с ошибкой django.core.exceptions.FieldDoesNotExist: Account has no field named 'username'
со ссылкой на USER_MODEL_USERNAME_FIELD
в стековой трассировке, вам также нужно будет установить для ACCOUNT_USER_MODEL_USERNAME_FIELD
значение None
(или соответствующее поле для вашего случая использования). Необходим полный набор настроек:
ACCOUNT_AUTHENTICATION_METHOD = 'email'
ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_UNIQUE_EMAIL = True
ACCOUNT_USER_MODEL_USERNAME_FIELD = None
ACCOUNT_USERNAME_REQUIRED = False
Этот параметр более подробно объясняется в документации по django-allauth для пользовательских пользовательских моделей со значениями по умолчанию, описанными в разделе " Конфигурация".