Я использую django allauth для социального входа/регистрации. Кроме того, у меня есть собственная форма регистрации в качестве альтернативного входа/регистрации. Ниже приведены поля, которые я получаю от пользователя в альтернативной форме.Django all_auth и пользовательская форма
class Profile(models.Model):
col1 = models.CharField(max_length=50, blank=True, null=True)
col2 = models.CharField(max_length=50, blank=True, null=True)
user = models.OneToOneField(User)
Таким образом, когда пользователь подписывает вверх, он запрашивает дополнительные поля, а также (col1
, col2
), кроме username
, email
и password
.
Ниже представлен вид регистрации.
user = User.objects.create_user(username, user_email, user_pass)
Profile.objects.create(user=user, col1=col1, col2=col2)
return
Итак, всякий раз, когда пользователь подписывается через альтернативную форму, вызывается вышеуказанное представление.
Теперь, напротив, когда пользователь подписывается из социальной учетной записи FB, он не запрашивает дополнительную информацию, то есть col1/col2
. Он напрямую подписывается без запроса дополнительной информации, и я не хочу, чтобы он спрашивал.
Затем я создаю строку в Profile
моделью после регистрации с использованием сигналов.
@receiver(user_signed_up)
def create_profile(request, user, sociallogin=None, **kwargs):
if sociallogin:
if sociallogin.account.provider == 'facebook':
data = sociallogin.account.extra_data
col1 = data.get('col1')
col2 = data.get('col2')
Profile.objects.create(user=user, col1=col1, col2=col2)
Таким образом, (1) моя проблема при создании пользователя, используя альтернативную форму, запись не вставляется в allauth
таблиц, которых я найти странные.
(2) Рассмотрите, я зарегистрировался с использованием альтернативной формы с использованием E1 в качестве идентификатора электронной почты. Теперь я регистрируюсь через allauth(FB)
с тем же идентификатором, что выдает ошибку.
(3) Как отправить письмо с подтверждением пользователям, которые зарегистрировались в альтернативной форме, используя all_auth
.
Почему downvote ??? – PythonEnthusiast
Я не спутник. Можете ли вы объяснить, как вы сохраняете 'extra_data'? –
@RajaSimon - в вопросе предоставляется демонстрационный фрагмент 'create_profile'. Пожалуйста, посмотрите. Благодарю. :) – PythonEnthusiast