提供Django';s来自S3的静态和媒体文件
我有一个奇怪的问题,我不知道是什么引起的。这是我当前的配置(使用Heroku): 问题是,静态文件工作正常,链接如下:提供Django';s来自S3的静态和媒体文件,django,amazon-s3,django-storage,Django,Amazon S3,Django Storage,我有一个奇怪的问题,我不知道是什么引起的。这是我当前的配置(使用Heroku): 问题是,静态文件工作正常,链接如下:https://s3.amazonaws.com/project-staging/img/homepage_left.png 第一个问题(管理员半坏): 管理员正在工作。CSS文件可以正常使用:https://project-staging.s3.amazonaws.com/admin/js/core.js?Signature=asdasdasd%3D&Expires=13524
https://s3.amazonaws.com/project-staging/img/homepage_left.png
第一个问题(管理员半坏):
管理员正在工作。CSS文件可以正常使用:https://project-staging.s3.amazonaws.com/admin/js/core.js?Signature=asdasdasd%3D&Expires=1352430664&AWSAccessKeyId=asdasdasA
但所有图像都已损坏:
https://project-staging.s3.amazonaws.com/admin?Signature=%2asdasdad%3D&Expires=1352430664&AWSAccessKeyId=asdasdaimg/icon_calendar.gif
我不知道为什么签名和AWSAccesskey会在那里:(。如果我手动删除它们,URL就可以正常工作了
第二个问题(通过ImageField/FileField上传的媒体):
我正在使用
{{MEDIA\uurl}{{{object.flyer}}
,它被翻译成/media/media/flyers/poster_1.png
,我如何向s3指出它?它应该是这样的:https://project-staging.s3.amazonaws.com/media/flyers/poster_1.png
回答第二个问题:您需要设置媒体\u URL=https://project-staging.s3.amazonaws.com/media/
就像你为STATIC\u URL
做第一个问题,我认为您需要做:
AWS_QUERYSTRING_AUTH = False
添加答案:
第一个问题:
确保您的bucket设置为public,并在设置中将AWS_QUERYSTRING_AUTH设置为False,这样您的文件将在没有签名部分的情况下提供
AWS_QUERYSTRING_AUTH = False
第二个问题:
确保在{{..url}末尾添加“url”
{{MEDIA_URL}}{{object.flyer.url}}
{{MEDIA_URL}}{{object.flyer.url}}