圧縮された CSS/Javascript と画像が Amazon の S3 から提供されるように、 django -compressorとdjango-staticfilesをセットアップしようとしています。
S3 をバックエンドとして使用して staticfiles をセットアップすることができたので、collectstatic
コマンドはファイルを の代わりに S3 に送信しますSTATIC_ROOT
。
しかしdjango-compressor
、ミックスに追加しようとすると、すべてがバラバラになるように見えます。リモート ストレージの設定に関するドキュメントに従って、ストレージ バックエンドbotoのサブクラスを作成したので、例をにコピーしましたstorage.py
。このキャッシュされたバックエンドの使用を開始すると、ファイルは S3 ではなく static_media にコピーされます。最初のページの読み込み後、S3 と static_media フォルダーに CACHE フォルダーが表示されます。
設定STATICFILES_STORAGE
しCOMPRESS_STORAGE
て boto の通常の S3 クラスに戻す ( storages.backends.s3boto.S3BotoStorage
) と、静的アセットが S3 バケットに収集され、static_media フォルダーは収集されません。ただし、ページをリロードしようとすると、次のエラーがスローされます。
Caught NotImplementedError while rendering: This backend doesn't support absolute paths.
{% compress css %}
タグおよびcompressor/base.py
オリジンとして強調表示します。
my の s3/staticfiles/compressor セクションsettings.py
:
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
AWS_ACCESS_KEY_ID = 'key'
AWS_SECRET_ACCESS_KEY ='secret'
AWS_STORAGE_BUCKET_NAME = 'my-bucket'
S3_URL = 'http://my-bucket.s3.amazonaws.com/'
MEDIA_ROOT = 'client_media'
MEDIA_URL = '/media/'
STATIC_ROOT = 'static_media'
STATIC_URL = S3_URL
ADMIN_MEDIA_PREFIX = S3_URL + 'admin/'
STATICFILES_DIRS = (
join(DIRNAME, 'static'),
)
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
'compressor.finders.CompressorFinder',
)
COMPRESS_ENABLED = True
COMPRESS_URL = S3_URL
COMPRESS_ROOT = STATIC_ROOT
COMPRESS_STORAGE = 'storage.CachedS3BotoStorage'
STATICFILES_STORAGE = COMPRESS_STORAGE
それで、どこが間違っているのですか?CachedS3BotoStorage
カスタム ストレージを使用するときに、何かを誤って構成したのでしょうか?