Ich verwende django-storages und sorl_thumbnail zusammen und verwende Amazon S3 für statische und Mediendateien. Ich benutze einen Eimer mit 2 Ordnern, 1 für statische und 1 für Medien.
Hier ist meine Konfiguration:
%Vor% MediaRootS3BotoStorage
und StaticRootS3BotoStorage
sind wie folgt definiert:
Wenn ich sorl_thumbnail verwende, befinden sich die erzeugten Thumbnails im richtigen Verzeichnis: https://s3.amazonaws.com/my-bucket/media/cache
, aber wenn sorl_thumbnail versucht, ein bereits vorhandenes Thumbnail abzurufen, lautet die generierte URL: https://s3.amazonaws.com/my-bucket/cache
, Sie werden feststellen, dass media
Ordner wird weggelassen.
Hast du eine Idee, wie ich das beheben könnte?
Ich weiß, ich könnte einfach Django-Speicher verwenden und meine statischen und Mediendateien in meinem Bucket durcheinander bringen, aber das ist ein bisschen zu dreckig für meinen Geschmack:)
Danke!
Ich konnte es schaffen, indem ich MediaRootS3BotoStorage und StaticRootS3BotoStorage wie folgt definiere:
%Vor%Dieser Link kann hilfreich sein Ссылка
Ich hatte das gleiche Problem und die Lösung von Salma Hamed erwies sich als die richtige für mich.
Vorher hatten wir
%Vor%was zu falschen Speicherwerten in unserer thumbnail_kvstore-Tabelle geführt hat. Diese Lambda-Definition erstellt keine neue Klasse und daher gibt type (StaticRootS3BotoStorage ()) 'storages.backends.s3boto.S3BotoStorage' zurück, die in die Tabelle geschrieben wird. Da diese "Speicher" -Werte verwendet werden, um später den Speicher zu instanziieren, um die Bild-URLs beim Anzeigen zu erhalten, führte dies dazu, dass S3BotoStorage () dafür verwendet wurde. Das Argument 'Standort' wurde also verloren.
Die Lösung von Salma Hamed, die diese benutzerdefinierten Speicher als Klassen definiert, behebt dies.
Danke dafür!
Ich hatte genau das gleiche Problem, aber ich habe einen Weg gefunden.
Ich habe mein DEFAULT_FILE_STORAGE
wieder auf storages.backends.s3boto.S3BotoStorage
gesetzt, so dass es nach cache/
gesucht hat, und ich könnte trotzdem alle meine Dateien nach media/
hochladen, und python manage.py collectstatic
funktioniert immer noch richtig, weil ich immer noch das als StaticRootS3BotoStorage = lambda: S3BotoStorage(location='static')
gesetzt habe.
Ich hoffe, dir hilft das, denn dieses Problem hat mich verrückt gemacht.
Es wurde gefunden, dass sorl-thumbnail
die zwischengespeicherte KV
image url
mit STATIC_URL
zurückgibt (bei der nächsten Anfrage, nachdem die erste Miniaturansicht erstellt wurde). Erscheint MEDIA_URL
hat keine Auswirkungen.
Nicht die beste Lösung. Eine S3
-Routing-Regel hinzugefügt.
Tags und Links django amazon-s3 django-storage boto sorl-thumbnail