社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Django

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

Android_Minsky • 6 年前 • 588 次点击  

我创建了一个名为 用户 简况 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
文章 [ 1 ]  |  最新文章 6 年前
Android_Minsky
Reply   •   1 楼
Android_Minsky    7 年前

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

ACCOUNT_EMAIL_VERIFICATION = None

最大长度=255

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