【问题标题】:Renaming sorl-thumbnail images in templates重命名模板中的 sorl-thumbnail 图像
【发布时间】:2013-08-26 08:23:43
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: django sorl-thumbnail


    【解决方案1】:

    是的,可以通过基于默认后端创建自己的后端并重载_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'
    

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 2011-05-13
      • 2018-01-06
      • 1970-01-01
      • 2015-06-28
      • 1970-01-01
      • 2012-04-21
      • 2017-08-09
      • 2014-01-03
      • 2012-06-17
      相关资源
      最近更新 更多