2013-08-23 2 views
1

Я использую sorl-миниатюру через thumbnail тег шаблона в моих шаблонах Django, следующим образом:Переименование изображения sorl-миниатюра в шаблонах

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

Оригинальное название файл содержит некоторую информацию, которая имеет отношение для моих пользователей в случае их загрузки. Когда я изменяю размер изображения, используя sorl-thumbnail, изображение с измененным размером получает новое имя.

Есть ли способ для sorl уменьшенных изображений -порождённого изображения, чтобы сохранить имя исходного файла (возможно добавление «-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' 

Я надеюсь, что это помогает

Смежные вопросы