Я пытаюсь принудительно проверить электронную почту новых пользователей, входящих в мое приложение Django.Для этого я использую django-allauth 0.37.1.
Вы можете сделать это, переопределив приведенный ниже метод, который принадлежит классу провайдера django-allauth.Пример приведен в их исходном коде:
def extract_email_addresses(self, data):
"""
For example:
[EmailAddress(email='john@example.com',
verified=True,
primary=True)]
"""
return []
Вот что я перезаписал:
def extract_email_addresses(self, data):
return [EmailAddress(email=data['email'].strip().lower(), verified=True, primary=True)]
Установив verified=True
, вы можете автоматически проверять электронную почту.Проблема в том, что Джанго не позволит мне.Выдает: RelatedObjectDoesNotExist: EmailAddress has no user.
Я думаю, что это связано с ограничением базы данных иностранного ключа для пользователя.Который требуется сделать по электронной почте.Единственная проблема в том, что пользователь еще не существует.Для того, чтобы создать пользователя, мне сначала нужно письмо.Ручное снятие этого ограничения на уровне базы данных не кажется правильным решением.
Мои настройки для Джанго-Аллаута:
ACCOUNT_EMAIL_VERIFICATION = 'mandatory'
ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_USERNAME_REQUIRED = False
ACCOUNT_USER_MODEL_USERNAME_FIELD = None
ACCOUNT_CONFIRM_EMAIL_ON_GET = True
ACCOUNT_LOGOUT_ON_GET = True
ACCOUNT_AUTHENTICATION_METHOD = 'username'
ACCOUNT_USER_MODEL_USERNAME_FIELD = 'username'
ACCOUNT_UNIQUE_EMAIL=False
Кто-то знает, что я здесь не так делаю?