1

次のように、 Djangoテンプレートのtemplate タグを介してsorl-thumbnailを使用しています。thumbnail

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

元のファイル名には、ユーザーがダウンロードした場合に関連する情報が含まれています。sorl-thumbnailを使用して画像のサイズを変更すると、サイズ変更された画像に新しい名前が付けられます。

sorl-thumbnail で生成された画像が元のファイルの名前を保持する (おそらく "-thumb" を追加する) 方法、またはテンプレートのコードを使用してファイルの名前を変更する方法はありますか? (モデルは放っておきたいです。)

4

1 に答える 1

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'

役立つことを願っています

于 2014-07-28T10:06:46.667 に答える