我有一个奇怪的问题,我不知道是什么导致它。这是我当前的配置(使用Heroku
):
MEDIA_URL = '/media/'
STATIC_URL = '/static/'
STATICFILES_DIRS = (
os.path.join(PROJECT_DIR, '../static'),
)
#Determine if local or deployed.
if 'DATABASE_URL' in os.environ:
STATICFILES_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
AWS_ACCESS_KEY_ID = 'A...A'
AWS_SECRET_ACCESS_KEY = '...R'
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
# PRODUCTION OR STAGING
if 'PROD' in os.environ:
AWS_STORAGE_BUCKET_NAME = 's3.project.com'
STATIC_URL = "https://s3.amazonaws.com/project/"
else:
AWS_STORAGE_BUCKET_NAME = 'project-staging'
STATIC_URL = "https://s3.amazonaws.com/project-staging/"
else:
STATIC_ROOT = ''
问题是,静态文件工作正常,链接如下所示: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
我不知道为什么签名和AWSAccess密钥在那里:(。如果我删除它们(手工),URL工作正常!
第二个问题(通过ImageField / FileField上传的媒体):
我正在使用{{MEDIA_URL}}{{object.flyer}}
,它会转换为/media/media/flyers/poster_1.png
,如何将其指向s3?它应该是这样的:https://project-staging.s3.amazonaws.com/media/flyers/poster_1.png
答案 0 :(得分:0)
回答第二个问题:您需要像MEDIA_URL = https://project-staging.s3.amazonaws.com/media/
STATIC_URL
答案 1 :(得分:0)
关于你的第一个问题,我认为你需要这样做:
AWS_QUERYSTRING_AUTH = False
答案 2 :(得分:0)
添加答案:
第一个问题: 确保将您的存储桶设置为公共,并将设置中的AWS_QUERYSTRING_AUTH设置为False,这样就可以在没有签名部分的情况下提供文件
divideAndRound
第二个问题: 确保在{{..url}}
的末尾添加“ url”AWS_QUERYSTRING_AUTH = False