gpt4 book ai didi

python - sorl-thumbnail 在刷新时给出错误的 url

转载 作者:太空宇宙 更新时间:2023-11-03 17:49:38 24 4
gpt4 key购买 nike

我尝试在上传图像之前调整图像大小,然后将 url 作为 json 值发回。

这就是我的模型的样子:

class Picture(models.Model):
picid = models.AutoField(null=False, unique=True, primary_key=True)
user = models.ForeignKey(User, on_delete=models.CASCADE)
large = ImageField(upload_to=Helper.createPhotoName)
med = ImageField(upload_to=Helper.createPhotoName)
small = ImageField(upload_to=Helper.createPhotoName)

def save(Self, *args, **kwargs):
super(Picture, self).save(*args, **kwargs)
self.med = get_thumbnail(self.large, '150x150', crop='center', quality=99)
self.small = get_thumbnail(self.large, '80x80', crop='center', quality=99)

用户上传图片后,将其保存到模型中,获取url并将其发送回客户端。

   self.f = request.Files['file']
usr = User.objects.get(pk=self.uid)
pic = usr.picture_set.create(large=self.f, med=self.f, small=self.f)

self.data['med'] = pic.med.url
self.data['small'] = pic.small.url

之后,在另一个 View 中,每当重新加载或重新访问页面以显示旧图像以及更改它的选项时,总是会在数据库中查找保存的图像。

  pic = Picture.objects.get(user=uid)
self.data['photo'] = {
'small': pic.small.url,
'med': pic.med.url,
'silh': False
}

虽然第一次我得到了正确的网址,但第二次我得到了错误的网址。每次上传时,我都会在 upload_to 路径中获得 3 个图像,并在 MEDIA_ROOT 的缓存目录中获得 3 个调整大小的图像。在图片表upload_to路径中保存的是不是缓存路径,而调整大小的图像位于缓存目录中。

在thumbnail_kvstore表中,我可以看到调整大小的图像的路径为name字典键。上传后,我得到了缓存的 url,但在刷新时,我得到了 upload_to 路径的 url,并且无法获取调整大小的图像。可能是什么问题呢?

最佳答案

您应该在缩略图字段设置之后调用save():

def save(Self, *args, **kwargs):
self.med = get_thumbnail(self.large, '150x150', crop='center',
quality=99).name
self.small = get_thumbnail(self.large, '80x80', crop='center',
quality=99).name
super(Picture, self).save(*args, **kwargs)

关于python - sorl-thumbnail 在刷新时给出错误的 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29270659/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com