Saya tidak dapat menemukan cara untuk membuat thumbnail file statis (dalam STATIC_ROOT). Tampaknya hanya berfungsi pada file eksternal (http://....) dan media (dalam MEDIA_ROOT).
Ini sangat membantu ketika ukuran keluaran gambar statis tidak selalu sama (baik melalui preferensi pengguna, tema, dll)
Anda perlu menggunakan beberapa penyimpanan yang menggunakan STATIC_ROOT, misalnya Anda dapat menggunakan 'django.core.files.storage.FileSystemStorage' dan membuat instance dengan location=settings.STATIC_ROOT dan base_url=settings.STATIC_URL, silakan lanjutkan di stackoverflow karena ini bukan a serangga.
Setelah lima tahun masih tidak ada kemungkinan untuk menghasilkan jempol dari file statis tanpa mengubah penyimpanan DEFAULT, karena https://github.com/mariocesar/sorl-thumbnail/blob/master/sorl/thumbnail/base.py#L100
StackOverflow tidak akan membantu karena implementasi.
Adakah peluang untuk MEMPERBAIKI itu? Melewati instance penyimpanan khusus melalui get_thumbnail()
sudah cukup.
Berikut adalah contoh tambalan https://github.com/marcinn/sorl-thumbnail/commit/61557b41169f0656063c557735ef62908a5fcaab
EDIT : maaf, sepertinya output dari thumbnail.url
valid, tetapi ketika diambil dari cached.url
diawali dengan /media/
alih-alih /static/
. Ada sesuatu yang lebih rusak di dalam.
EDIT (2) : ada masalah desain dalam deserializing kode penyimpanan - kelas penyimpanan dimuat dan dipakai dengan default alih-alih menggunakan instance yang ada. Dengan kata lain - sorl.thumbnail tidak menggunakan kembali contoh penyimpanan tetapi membuat sendiri (dikonfigurasi secara berbeda). Sebagai solusinya, kami dapat mewarisi dari FileSystemStorage dan menentukan penginisialisasi khusus.
Setelah menerapkannya, siapa pun dapat dengan mudah membuat thumbnail untuk apa pun.
Dimungkinkan untuk membuat tag templat khusus seperti ini:
from django.core.files.storage import FileSystemStorage
from django.conf import settings
from django import template
from sorl.thumbnail.templatetags.thumbnail import ThumbnailNode
register = template.Library()
class StaticThumbnailStorage(FileSystemStorage):
def __init__(self, *args, **kw):
super(StaticThumbnailStorage, self).__init__(
*args, location='/path/to/custom/static/'
base_url=settings.STATIC_URL, **kw)
storage = StaticThumbnaikStorage()
class StaticThumbnailNode(ThumbnailNode):
def _get_thumbnail(self, file_, geometry, **options):
options['storage'] = storage
return super(StaticThumbnailNode, self)._get_thumbnail(
file_, geometry, **options)
@register.tag
def static_thumbnail(parser, token):
return StaticThumbnailNode(parser, token)
Harap dicatat bahwa pengaturan tidak perlu diubah.
Komentar yang paling membantu
Berikut adalah contoh tambalan https://github.com/marcinn/sorl-thumbnail/commit/61557b41169f0656063c557735ef62908a5fcaab
EDIT : maaf, sepertinya output dari
thumbnail.url
valid, tetapi ketika diambil daricached.url
diawali dengan/media/
alih-alih/static/
. Ada sesuatu yang lebih rusak di dalam.EDIT (2) : ada masalah desain dalam deserializing kode penyimpanan - kelas penyimpanan dimuat dan dipakai dengan default alih-alih menggunakan instance yang ada. Dengan kata lain - sorl.thumbnail tidak menggunakan kembali contoh penyimpanan tetapi membuat sendiri (dikonfigurasi secara berbeda). Sebagai solusinya, kami dapat mewarisi dari FileSystemStorage dan menentukan penginisialisasi khusus.
Setelah menerapkannya, siapa pun dapat dengan mudah membuat thumbnail untuk apa pun.
Dimungkinkan untuk membuat tag templat khusus seperti ini:
Harap dicatat bahwa pengaturan tidak perlu diubah.