使用Django和s3boto,一些管理员图像(icon_clock.gif& icon_calendar.gif)不显示

时间:2013-03-01 03:07:29

标签: django amazon-s3 boto

所有文件,包括那些未正确显示的文件,都存在于亚马逊的我的桶中。我发现不能显示的唯一两张图片是icon_clock.gif和icon_calendar.gif。其他一切都正常。

当我检查损坏图像的链接位置时,我得到了这个:

 https://my_bucket_name.s3.amazonaws.com/admin?Signature=MY_SIGNATURE&AWSAccessKeyId=MY_KEYimg/icon_clock.gif

正如您所看到的,查询参数不会添加到结尾,而是添加到链接的中间。

以下是相关设置:

import os.path

ROOT_DIR = os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))
PROJECT_NAME = os.path.basename(ROOT_DIR)

def ABS_PATH(*args):
    return os.path.join(ROOT_DIR, *args)

STATIC_ROOT = ABS_PATH('static')

AWS_ACCESS_KEY_ID = 'MY_KEY'
AWS_SECRET_ACCESS_KEY = 'MY_SECRET_ACCESS_KEY'

AWS_STORAGE_BUCKET_NAME = 'my_bucket_name'
STATICFILES_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
S3_URL = 'http://%s.s3.amazonaws.com/' % AWS_STORAGE_BUCKET_NAME
STATIC_URL = S3_URL

1 个答案:

答案 0 :(得分:5)

这似乎是在django-storage的当前开发版本中修复的。有关详细信息,请参阅issue 121

快速解决方法步骤:

  1. 使用django-storages
  2. 替换您的requirements.txt中的-e hg+https://bitbucket.org/david/django-storages@e27c8b61ab57e5afaf21cccfee005c980d89480f#egg=django_storages-dev
  3. 在您的设置中,添加AWS_QUERYSTRING_AUTH = False。此设置的结果是AWS auth stuff不包含在每个URL中。仅当S3存储桶中的所有文件都是公共文件时才执行此操作。