我创建了一个名为
用户
简况
django allauth公司
具有
和
谷歌
提供者。用户登录后,我希望创建一个配置文件,其中包含来自社交提供商的一些附加信息,例如:
全名、电子邮件、图片
.
型号.py:
from django.contrib.auth.models import User
from django.dispatch import receiver
from allauth.account.signals import user_signed_up
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
full_name = models.CharField(default=None, max_length=255)
email = models.CharField(default=None, max_length=500)
picture = models.ImageField(default='default.jpg', upload_to='profile_pics')
def __str__(self):
return self.user.username
@receiver(user_signed_up)
def populate_profile(sociallogin, user, **kwargs):
user.profile = Profile()
if sociallogin.account.provider == 'facebook':
user_data = user.socialaccount_set.filter(provider='facebook')[0].extra_data
picture_url = "http://graph.facebook.com/" + sociallogin.account.uid + "/picture?type=large"
email = user_data['email']
full_name = user_data['name']
if sociallogin.account.provider == 'google':
user_data = user.socialaccount_set.filter(provider='google')[0].extra_data
picture_url = user_data['picture']
email = user_data['email']
full_name = user_data['name']
user.profile.picture = picture_url
user.profile.email = email
user.profile.full_name = full_name
user.profile.save()
登录时使用
,我收到以下错误消息:
当我试图登录时
谷歌
,我收到以下信息:
值太长,无法更改类型字符(100)
有人能告诉我我的密码怎么了吗?提前谢谢。