Ich kann keine Möglichkeit finden, eine statische Datei (in STATIC_ROOT) als Miniaturansicht anzuzeigen. Es scheint nur mit externen (http://....) und Mediendateien (in MEDIA_ROOT) zu funktionieren.
Dies ist sehr hilfreich, wenn die Ausgabegröße eines statischen Bildes nicht immer gleich ist (sei es durch Benutzereinstellungen, Themen usw.).
Sie müssen einen Speicher verwenden, der STATIC_ROOT verwendet, zum Beispiel können Sie 'django.core.files.storage.FileSystemStorage' verwenden und mit location=settings.STATIC_ROOT und base_url=settings.STATIC_URL instanziieren, bitte fahren Sie mit stackoverflow fort, da dies kein ist Insekt.
Nach fünf Jahren gibt es wegen https://github.com/mariocesar/sorl-thumbnail/blob/master/sorl/thumbnail/base.py#L100 immer noch keine Möglichkeit, Thumbs aus statischen Dateien zu generieren, ohne den DEFAULT-Speicher zu ändern
StackOverflow wird aufgrund der Implementierung nicht helfen.
Irgendwelche Möglichkeiten das zu FIXEN? Es reicht aus, eine benutzerdefinierte Speicherinstanz über get_thumbnail()
zu übergeben.
Hier ist ein Beispiel für einen Patch https://github.com/marcinn/sorl-thumbnail/commit/61557b41169f0656063c557735ef62908a5fcaab
BEARBEITEN : Entschuldigung, es scheint, dass die Ausgabe von thumbnail.url
gültig ist, aber wenn sie von cached.url
abgerufen wird, wird ihr /media/
anstelle von /static/
vorangestellt. Da ist noch mehr kaputt.
BEARBEITEN (2) : Beim Deserialisieren von Speichercode gibt es ein Designproblem - die Speicherklasse wird mit Standardwerten geladen und instanziiert, anstatt eine vorhandene Instanz zu verwenden. Mit anderen Worten - sorl.thumbnail verwendet die Speicherinstanz nicht wieder, sondern erstellt eine eigene (anders konfiguriert). Als Problemumgehung können wir von FileSystemStorage erben und einen benutzerdefinierten Initialisierer definieren.
Nach der Anwendung kann jeder ganz einfach Thumbnails für alles erstellen.
Es ist möglich, ein benutzerdefiniertes Vorlagen-Tag wie dieses zu erstellen:
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)
Bitte beachten Sie, dass die Einstellungen nicht geändert werden müssen.
Hilfreichster Kommentar
Hier ist ein Beispiel für einen Patch https://github.com/marcinn/sorl-thumbnail/commit/61557b41169f0656063c557735ef62908a5fcaab
BEARBEITEN : Entschuldigung, es scheint, dass die Ausgabe von
thumbnail.url
gültig ist, aber wenn sie voncached.url
abgerufen wird, wird ihr/media/
anstelle von/static/
vorangestellt. Da ist noch mehr kaputt.BEARBEITEN (2) : Beim Deserialisieren von Speichercode gibt es ein Designproblem - die Speicherklasse wird mit Standardwerten geladen und instanziiert, anstatt eine vorhandene Instanz zu verwenden. Mit anderen Worten - sorl.thumbnail verwendet die Speicherinstanz nicht wieder, sondern erstellt eine eigene (anders konfiguriert). Als Problemumgehung können wir von FileSystemStorage erben und einen benutzerdefinierten Initialisierer definieren.
Nach der Anwendung kann jeder ganz einfach Thumbnails für alles erstellen.
Es ist möglich, ein benutzerdefiniertes Vorlagen-Tag wie dieses zu erstellen:
Bitte beachten Sie, dass die Einstellungen nicht geändert werden müssen.