2013-08-23 34 views
1

我在我的的Django模板中使用SORL-縮略圖通過thumbnail模板標籤,如下所示:重命名SORL-縮略圖模板

{% thumbnail foo.imgA "1600x1200" as im %} 
<a href='{{ im.url }}' title='{{ foo.imgA.url }}'> 
{% endthumbnail %} 

原始文件名中包含的一些信息是相關給我的用戶,以防他們下載它。當我使用sorl-thumbnail調整圖像大小時,調整大小的圖像會得到一個新名稱。

有沒有辦法讓sorl-thumbnail - 生成的圖像保留原始文件的名稱(可能附加「-thumb」),或者使用模板中的代碼重命名文件? (我想單獨離開模型。)

回答

3

是的,它可以通過創建自己的後端基於默認的後端並超載_get_thumbnail_filename方法。

例如,像這樣

from sorl.thumbnail.base import ThumbnailBackend, EXTENSIONS 

from sorl.thumbnail.conf import settings 
from sorl.thumbnail.helpers import tokey, serialize 
import os.path 

class KeepNameThumbnailBackend(ThumbnailBackend): 

    def _get_thumbnail_filename(self, source, geometry_string, options): 
     """ 
     Computes the destination filename. 
     """ 
     key = tokey(source.key, geometry_string, serialize(options)) 

     filename, _ext = os.path.splitext(os.path.basename(source.name)) 

     path = '%s/%s' % (key, filename) 
     return '%s%s.%s' % (settings.THUMBNAIL_PREFIX, path, EXTENSIONS[options['format']]) 

然後你必須激活這個新的後端在您的項目settings.py

THUMBNAIL_BACKEND = 'path.to.KeepNameThumbnailBackend' 

我希望它能幫助