django sorl在保存时创建拇指

django sorl在保存时创建拇指,django,sorl-thumbnail,Django,Sorl Thumbnail,上传照片时,我需要创建3种拇指。 700x500、700x700、500x400–因此,当我在模板上使用以下内容时: {% thumbnail photo.file "700x500" crop="center" as im %} 或 或 第一个用户不会等待,缩略图模板标记应该从缓存中获取拇指。对吧? 这是我的模型: class Photo(models.Model): def __unicode__(self): return 'photo #%s' % (self.pk)

上传照片时,我需要创建3种拇指。
700x500、700x700、500x400–因此,当我在模板上使用以下内容时:

{% thumbnail photo.file "700x500" crop="center" as im %}

第一个用户不会等待,缩略图模板标记应该从缓存中获取拇指。对吧?

这是我的模型:

class Photo(models.Model):
  def __unicode__(self):
    return 'photo #%s' % (self.pk)  

  file = ImageField(upload_to=content_file_name)
  name = models.CharField(max_length=50, null=True, blank=True)
  featured = models.BooleanField(default=False)

"""
    Make thumb on save
"""
  def save(self, *args, **kwargs):
    if not self.id:

        #700x500
        super(Photo, self).save(*args, **kwargs)  
        resized = get_thumbnail(self.file, "700x500", crop="center")
        self.file.save(resized.name, ContentFile(resized.read()), True)

        #700x700
        super(Photo, self).save(*args, **kwargs)  
        resized = get_thumbnail(self.file, "700x700", crop="center")
        self.file.save(resized.name, ContentFile(resized.read()), True)

        #500x400
        super(Photo, self).save(*args, **kwargs)  
        resized = get_thumbnail(self.file, "500x400", crop="center")
        self.file.save(resized.name, ContentFile(resized.read()), True)

    super(Photo, self).save(*args, **kwargs)
有道理吗


实际上,在保存后不创建thumb,但仅使用模板上的templatetags缩略图,我的服务器有时会出现故障,因为我有很多thumb要创建。

使用异步任务队列(芹菜),上传文件时创建缩略图。我知道芹菜可能是最好的解决方案,但我需要直接创建没有芹菜的拇指。顺便说一句,怎么办?调用get_缩略图(self.file,“500x400”,crop=“center”)?如果需要限制操作,可以从任务中调用get_缩略图。芹菜提供了方法。如果首先使用{%thumbnail photo.file“500x400”crop=“center”as im%},然后在同一文件上使用get_缩略图(file,“500x400”,crop=“center”)。我应该从缓存中获取结果吗?似乎每次拇指都在再生,因为函数返回某些内容的速度非常慢。lmk,谢谢。@petkostas有什么想法吗?
{% thumbnail photo.file "500x400" crop="center" as im %}
class Photo(models.Model):
  def __unicode__(self):
    return 'photo #%s' % (self.pk)  

  file = ImageField(upload_to=content_file_name)
  name = models.CharField(max_length=50, null=True, blank=True)
  featured = models.BooleanField(default=False)

"""
    Make thumb on save
"""
  def save(self, *args, **kwargs):
    if not self.id:

        #700x500
        super(Photo, self).save(*args, **kwargs)  
        resized = get_thumbnail(self.file, "700x500", crop="center")
        self.file.save(resized.name, ContentFile(resized.read()), True)

        #700x700
        super(Photo, self).save(*args, **kwargs)  
        resized = get_thumbnail(self.file, "700x700", crop="center")
        self.file.save(resized.name, ContentFile(resized.read()), True)

        #500x400
        super(Photo, self).save(*args, **kwargs)  
        resized = get_thumbnail(self.file, "500x400", crop="center")
        self.file.save(resized.name, ContentFile(resized.read()), True)

    super(Photo, self).save(*args, **kwargs)