Py学习  »  Django

如何正确组合Django Allauth和自定义用户配置文件应用程序?

Android_Minsky • 4 年前 • 317 次点击  

我创建了一个名为 用户 简况 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)

有人能告诉我我的密码怎么了吗?提前谢谢。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/53123
 
317 次点击  
文章 [ 1 ]  |  最新文章 4 年前
Android_Minsky
Reply   •   1 楼
Android_Minsky    4 年前

现在问题解决了。我通过添加以下内容解决了第一个错误消息:

ACCOUNT_EMAIL_VERIFICATION = None

最大长度=255

picture = models.ImageField(default='default.jpg', upload_to='profile_pics', max_length=255)