私は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)電子メールIDとしてE1を使用して代替フォームを使用してサインアップしたとします。今度は同じIDでallauth(FB)
にサインアップすると、エラーが発生します。
(3)all_auth
を使用して別の形式で登録したユーザーに確認メールを送信するにはどうすればよいですか。
なぜdownvote ??? – PythonEnthusiast
私はdownvoterではない。 'extra_data'をどのように保存しているのか説明できますか? –
@RajaSimon - デモスニペット 'create_profile'が質問に提供されています。親切な一見。ありがとう。 :) – PythonEnthusiast