这个问题是关于使用https://github.com/PhilipGarnero/django-rest-framework-social-oauth2库在 Django 模型中自动保存 Facebook 个人资料图片。
编辑:
有两种方法可以解决这个问题:将图像的 URLCharField()
保存在或使用ImageField()
. 两种解决方案都可以。
上面的库允许我使用不记名令牌创建和验证用户。我已经创建了配置文件模型:
class UserProfile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='userprofile')
photo = models.FileField(blank=True) # OR
######################################
url = 'facebook.com{user id}/picture/'
photo = models.CharField(default=url)
@receiver(post_save, sender=User)
def create_user_profile(sender, instance, created, **kwargs):
if created:
UserProfile.objects.create(user=instance)
@receiver(post_save, sender=User)
def save_user_profile(sender, instance, **kwargs):
instance.userprofile.save()
它会自动为每个用户创建用户配置文件。现在,我想添加以下代码来保存 Facebook 中的照片。Facebook API 需要 user id
获取这张图片。
photo = 'https://facebook/{user-id}/picture/'
UserProfile.objects.create(user=instance, photo=photo)
以上不起作用,因为
1)我不知道从哪里得到user id
。
2)图像不能这样存储,我需要将其转换为字节或其他方法。