私はdjango-pipeline + django-storageとS3{% static %}
バックエンドを使用していますが、タグを使用して静的ファイルを適切に読み込もうとしています。パイプラインのドキュメントを読んでフォローしました: http://django-pipeline.readthedocs.org/en/latest/storages.html#using-with-other-storages
そして、次の混合クラスを作成しました。
from django.contrib.staticfiles.storage import CachedFilesMixin
from pipeline.storage import PipelineMixin
from storages.backends.s3boto import S3BotoStorage
class S3PipelineStorage(PipelineMixin, CachedFilesMixin, S3BotoStorage):
pass
私のプロダクション設定ファイルには次のものがあります:
AWS_QUERYSTRING_AUTH = False
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
STATICFILES_STORAGE = 'myapp.S3PipelineStorage'
AWS_ACCESS_KEY_ID = 'xxx'
AWS_SECRET_ACCESS_KEY = 'xxx
AWS_STORAGE_BUCKET_NAME = 'mybucket'
from datetime import datetime, timedelta
AWS_HEADERS = {
'Expires': (datetime.now() + timedelta(days=365*10)).strftime('%a, %d %b %Y 00:00:00 GMT')
}
STATIC_URL = 'https://mybucket.s3.amazonaws.com/'
STATIC_ROOT = ''
これらの設定を使用して collectstatic を実行すると、すべてが正常に機能しますが、次を使用します。
{% static 'path/file.xxx' %}
False
設定したにもかかわらず、クエリ文字列認証を含む URL を取得したAWS_QUERYSTRING_AUTH
ため、静的ファイルが読み込まれません...そのクエリ文字列を削除することで、適切に読み込むことができます。querystring_auth = False
に " "も設定しようmyapp.S3PipelineStorage
としましたが、無視されているようです:(
設定が尊重されないのはなぜですか? そのqsを削除するための効果的な解決策は何ですか? (私はそれを取り除くためのカスタム フィルターについて考えています... しかし、そのような「パッチ」を書くのは嫌いです) ...そして最後に、その認証クエリ文字列を保持しなければならない場合に備えて、なぜ機能しないのでしょうか? この動作をデバッグするにはどうすればよいですか?
編集: 動作します... キャッシュに関連する問題でした :|