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.django-storage + sorl_thumbnail + S3 funktioniert nicht gut zusammen (URLs stimmen nicht überein)
Hier ist meine config:
MEDIA_ROOT = '/media/'
MEDIA_URL = 'https://s3.amazonaws.com/my-bucket/media/'
STATIC_ROOT = '/static/'
STATIC_URL = 'https://s3.amazonaws.com/my-bucket/static/'
AWS_STORAGE_BUCKET_NAME = 'my-bucket'
DEFAULT_FILE_STORAGE = 'my_lib.s3utils.MediaRootS3BotoStorage'
STATICFILES_STORAGE = 'my_lib.s3utils.StaticRootS3BotoStorage'
MediaRootS3BotoStorage
und StaticRootS3BotoStorage
wie folgt definiert sind:
StaticRootS3BotoStorage = lambda: S3BotoStorage(location='static')
MediaRootS3BotoStorage = lambda: S3BotoStorage(location='media')
Wenn ich sorl_thumbnail verwende, die generierten Thumbnails im richtigen Verzeichnis befinden: https://s3.amazonaws.com/my-bucket/media/cache
aber wenn sorl_thumbnail versucht, ein bereits vorhandenes Thumbnail abzurufen. Die generierte URL lautet: https://s3.amazonaws.com/my-bucket/cache
. Sie werden feststellen, dass der Ordner media
nicht angegeben ist.
Haben Sie eine Idee, wie ich das beheben könnte?
Ich weiß, dass ich nur django-Speicher nutzen könnte und habe meine statischen und Mediendateien alle in meinem Eimer gemischt, aber das ist ein bisschen zu schmutzig für meinen Geschmack :)
Thank you!
Die Methoden 'super()' für jede der obigen '__init __()' Methoden rufen die falschen Klassen auf. sie sein sollten: 'Super (StaticRootS3BotoStorage, Selbst-) .__ init __ (* args, ** kwargs)' und 'Super (MediaRootS3BotoStorage, Selbst-) .__ init __ (* args, ** kwargs)' – niceguydave