8

我有一个奇怪的问题,我不知道是什么原因造成的。这是我当前的配置(使用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

我不知道为什么 Signature 和 AWSAccesskey 在那里 :(。如果我(手动)删除它们,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

4

3 回答 3

0

回答你的第二个问题:你需要MEDIA_URL = https://project-staging.s3.amazonaws.com/media/像你正在做的那样设置STATIC_URL

于 2012-11-09T13:49:06.483 回答
0

对于您的第一个问题,我认为您需要这样做:

AWS_QUERYSTRING_AUTH = False
于 2014-06-05T01:22:31.697 回答
0

添加答案:

第一个问题: 确保您的存储桶设置为公共并将您的设置中的 AWS_QUERYSTRING_AUTH 设置为 False,这样您的文件将在没有签名部分的情况下提供

AWS_QUERYSTRING_AUTH = False

第二个问题: 确保在 {{..url}} 末尾添加“url”

{{MEDIA_URL}}{{object.flyer.url}}
于 2019-05-31T18:33:38.980 回答