最終的に回避策が見つかりました。
私のS3バケットに2つの異なるフォルダ(静的およびアップロード)に自分のファイルをアップロードすることができるようにするために、私は私のsettings.py
ファイルでこれを持っている:
:
myapp.s3utils.py
ファイルで
STATICFILES_STORAGE = 'myapp.s3utils.StaticRootS3BotoStorage'
DEFAULT_FILE_STORAGE = 'myapp.s3utils.MediaRootS3BotoStorage'
そして、これ
from storages.backends.s3boto import S3BotoStorage
StaticRootS3BotoStorage = lambda: S3BotoStorage(location='static')
MediaRootS3BotoStorage = lambda: S3BotoStorage(location='uploads')
しかし、私はDjangoのキャッシュバストを使用することができませんでした。基本的に、それはあなたが破裂キャッシュを使用することができますManiFestfilesMixinを、追加
from storages.backends.s3boto import S3BotoStorage
from django.contrib.staticfiles.storage import ManifestFilesMixin
class CustomS3Storage(ManifestFilesMixin, S3BotoStorage):
pass
StaticRootS3BotoStorage = lambda: CustomS3Storage(location='static')
MediaRootS3BotoStorage = lambda: S3BotoStorage(location='uploads')
: 溶液を、私のmyapp.s3utils.py
ファイルを変更することでした。
サイドノートでは、静的ファイルにはキャッシュ無効化を使用していますが、アップロードファイルにはキャッシュ無効化を使用していないことがわかります。そのため、MediaRootS3BotoStorageは、CustomS3Storageではなく、S3BotoStorageクラスを呼び出します。 アップロードファイルが私のサーバー(静的ファイル)に保存されていないので、S3バケットに直接格納されているので、コラテラルは私のサーバーにないので、名前にハッシュを追加する必要はありません。
これは私の一日を節約する! 私はこれを何時間も成功させずに処理してきました。私はこの答えがより肯定的な票を持っていない理由を理解していません。 s3utils.pyのこの単純な変更は、私の魅力のように機能します:) ありがとうございました!!! – rdiaz82
この場合、 'staticfiles.json'はS3またはローカルファイルシステムにどこに格納されますか?それはすべての要求と一緒に読み込まれますか? – Flimm
私の質問に答えるためには、 'staticfiles.json'がS3に保存されて公開されているように見え、それはすべてのリクエストで読み込まれないようです。 – Flimm