3
我正在使用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作爲電子郵件ID使用替代形式註冊。現在我通過allauth(FB)
註冊相同的ID,它會引發錯誤。 (3)如何向使用all_auth
以其他形式註冊的用戶發送確認郵件。
爲什麼要downvote ??? – PythonEnthusiast
我不是一個downvoter。你能解釋一下你如何保存'extra_data'? –
@RajaSimon - 問題中提供了一個演示代碼'create_profile'。請看看。謝謝。 :) – PythonEnthusiast