2013-12-21 21 views
0

SORL縮略圖具有低級別的API,它可以讓你做,例如:檢查SORL縮略圖已經使用低級別的API已經被緩存的圖像

from sorl.thumbnail import get_thumbnail 
im = get_thumbnail(my_file, '100x100', crop='center', quality=99) 

這將返回到緩存的文件的引用。如果它已經被創建,那就非常快。但是,如果必須首次創建它,則使用遠程存儲(例如S3)可能需要很長時間。

有沒有辦法運行在Python(即不模板)命令檢查是否SORL會產生首次縮略圖?

PS。我知道類似的問題的here但這是問關於它的模板背景,並具有哈克解決方案,使用自定義的SQL,而不是SORL API的答案。

回答

1

在我sorl.thumbnail版本,11.12,方法get_thumbnail在sorl.thumbnail.base.py定義,並開始如下:

def get_thumbnail(self, file_, geometry_string, **options): 
    """...""" 
    source = ImageFile(file_) 
    for key, value in self.default_options.iteritems(): 
     options.setdefault(key, value) 
    # ... 
    for key, attr in self.extra_options: 
     value = getattr(settings, attr) 
     if value != getattr(default_settings, attr): 
      options.setdefault(key, value) 
    name = self._get_thumbnail_filename(source, geometry_string, options) 
    thumbnail = ImageFile(name, default.storage) 
    cached = default.kvstore.get(thumbnail) 
    if cached: 
     return cached 
    if not thumbnail.exists(): 
     ... 

如果您使用此代碼,並返回類似

cached or thumbnail.exists() 

這應該會給你想要的結果。