django-storage + sorl_thumbnail + S3 funktioniert nicht gut zusammen (URLs stimmen nicht überein)

8

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:

%Vor%

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!

    
e-Jah 30.09.2012, 07:56
quelle

5 Antworten

17

Ich konnte es schaffen, indem ich MediaRootS3BotoStorage und StaticRootS3BotoStorage wie folgt definiere:

%Vor%

Dieser Link kann hilfreich sein Ссылка

    
Salma Hamed 10.11.2012, 10:49
quelle
8

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!

    
Ole 23.05.2013 15:45
quelle
1

Haben Sie versucht, THUMBNAIL_PREFIX auf media / cache /? zu setzen?

Ссылка

    
jasisz 05.10.2012 17:58
quelle
1

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.

    
Derek Parker 13.10.2012 04:17
quelle
0

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.

%Vor%     
hortovanyi 27.01.2013 08:25
quelle