在模板中重命名sorl-thumbnail图像

时间:2013-08-23 10:11:13

标签: django sorl-thumbnail

我通过 Django 模板中的thumbnail模板标记使用 sorl-thumbnail ,如下所示:

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

原始文件名包含一些与我的用户下载时相关的信息。当我使用 sorl-thumbnail 调整图像大小时,调整大小的图像会获得一个新名称。

是否有办法让 sorl-thumbnail 生成的图像保留原始文件的名称(可能附加“-thumb”),或者使用模板中的代码重命名文件? (我想单独留下模型。)

1 个答案:

答案 0 :(得分: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'

我希望它有所帮助