我正在使用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
答案 0 :(得分:0)
我已将STATIC_URL更改为如下所示,现在工作正常。
STATIC_URL ='// bucketname.s3.amazonaws.com/static /'
但MEDIA_URL就像在文档本身中提到的那样,并且MEDIA_URL工作正常。只有STATIC_URL需要修改。
看起来文档错误。
答案 1 :(得分:0)
通常,S3可以使用子域或子文件夹路径格式。此特定存储使用的django-storages
的默认值是子域。所以有趣的是,更改为子文件夹解决了这个问题。 OP提到在different question中使用欧洲区域,我怀疑这里的根本问题与正在使用的端点有关,或者是S3 / S3BotoStorage的区域影响配置设置之一(例如AWS_CALLING_FORMAT
)