Django管道 Django存储 S3:查询字符串的噩梦



我正在使用 django-pipeline django-Storage s3 backend,但是我'我疯狂地尝试使用{% static %}标签正确加载静态文件。我阅读并遵循管道文档:http://django-pipeline.readthedocs.org/en/latest/storages.html#using-with-phother-phother-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' %}

我得到了一个包含Querystring auth的URL,尽管我在AWS_QUERYSTRING_AUTH中设置了False,因此我的静态文件未加载……通过删除该Querystring,我可以推定地加载它们。我还尝试在myapp.S3PipelineStorage中设置" querystring_auth = False",但似乎被忽略了:(

为什么不尊重设置?有什么有效的解决方案可以删除该QS?(我正在考虑将其剥离的自定义过滤器……但是我不想写这样的"补丁")……最后,如果我必须保留身份验证查询字符串,为什么不工作?我该如何调试此行为?

编辑:它有效……这是一个与缓存有关的问题:|

查看此答案。也许这是订单问题(例如,Django-storages覆盖了您的设置)。也许尝试设置每桶?

相关内容

  • 没有找到相关文章

最新更新