0

私はdjango-pipeline + django-storageS3{% 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を削除するための効果的な解決策は何ですか? (私はそれを取り除くためのカスタム フィルターについて考えています... しかし、そのような「パッチ」を書くのは嫌いです) ...そして最後に、その認証クエリ文字列を保持しなければならない場合に備えて、なぜ機能しないのでしょうか? この動作をデバッグするにはどうすればよいですか?

編集: 動作します... キャッシュに関連する問題でした :|

4

1 に答える 1

0

この答えを見てください。おそらくこれは順序の問題です (たとえば、django-storages は設定を上書きします)。たぶん、バケットごとに設定してみてください。

于 2014-02-02T19:26:06.937 に答える