如何使用DjangoAllauth从URL保存图像?

2024-04-24 11:57:29 发布

您现在位置:Python中文网/ 问答频道 /正文

用户正在通过Django AllAuth注册,他的个人资料图像URL正在被提取。然后我想把这个图像保存到ImageField。我该怎么做?这是我的密码:

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', max_length=255)

    def __str__(self):
        return self.user.username

    @receiver(user_signed_up)
    def populate_profile(sociallogin, user, **kwargs):

        profile = Profile(user=user)

        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']

        profile.picture = picture_url
        profile.email = email
        profile.full_name = full_name
        profile.save()

Tags: name图像defaultdatamodelsemailprofilelength