1

我正在使用 django-s3-folder-storage 来存储我的静态和媒体文件。我遵循了文档中提到的所有说明,但仍然无法提供我的静态文件。我可以为我的用户上传的文件提供服务,但是即使在运行 collectstatic 命令后静态文件也不会显示在网站上,该命令将文件复制到存储桶中。我没有在我的域中创建任何 CNAME 记录(不确定这是否有任何区别,因为我能够看到用户上传的图像)。

我的设置文件:

DEFAULT_FILE_STORAGE = 's3_folder_storage.s3.DefaultStorage'
DEFAULT_S3_PATH = "media"
STATICFILES_STORAGE = 's3_folder_storage.s3.StaticStorage'
STATIC_S3_PATH = "static"
AWS_ACCESS_KEY_ID = # omitted
AWS_SECRET_ACCESS_KEY = # omitted
AWS_STORAGE_BUCKET_NAME = # omitted

MEDIA_ROOT = '/%s/' % DEFAULT_S3_PATH
MEDIA_URL = '//s3.amazonaws.com/%s/media/' % AWS_STORAGE_BUCKET_NAME
STATIC_ROOT = "/%s/" % STATIC_S3_PATH
STATIC_URL = '//s3.amazonaws.com/%s/static/' % AWS_STORAGE_BUCKET_NAME
ADMIN_MEDIA_PREFIX = STATIC_URL + 'admin/'

STATICFILES_DIRS = (
       root('static'),
)

还有我的项目目录:

website_name
    static
    website_name
      settings.py
4

2 回答 2

0

我已将 STATIC_URL 更改为如下所示,现在工作正常。

STATIC_URL = '//bucketname.s3.amazonaws.com/static/'

但是 MEDIA_URL 就像文档本身中提到的那样,MEDIA_URL 工作正常。只有 STATIC_URL 需要修改。

看起来文档是错误的。

于 2013-04-01T19:11:24.063 回答
0

通常 S3 可以使用子域或子文件夹路径格式。此特定存储使用的默认值django-storages是子域。所以有趣的是,更改为子文件夹解决了这个问题。OP 在另一个问题中提到了使用欧洲区域,我怀疑这里的根本问题与正在使用的端点或 S3/S3BotoStorage 的影响区域的配置设置之一有关(例如AWS_CALLING_FORMAT)。

于 2013-04-01T19:53:42.023 回答