소셜 로그인/가입에 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