首页 > 解决方案 > 从 S3 存储桶提供静态文件不起作用?

问题描述

我已经配置了一个 S3 存储桶来存储和提供 Django 网站的静态和媒体文件,目前只是试图获取管理页面所需的静态文件等等。

这是我的设置文件中的所有静态和 AWS 配置信息:

STATICFILES_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
DEFAULT_FILE_STORAGE = 'config.storage_backends.MediaStorage'

#used to authenticate with S3
AWS_ACCESS_KEY_ID = 'AKIAWWJOJKZGFSJO2UPW' #not real one
AWS_SECRET_ACCESS_KEY = 'KNg1z5wXWiDRAIh4zLiHgbD2N3wtWZTK' #not real one

#for endpoints to send or retrieve files
AWS_STORAGE_BUCKET_NAME = 'my-static' #not real bucket name
AWS_DEFAULT_ACL = None
AWS_S3_CUSTOM_DOMAIN = f'{AWS_STORAGE_BUCKET_NAME}.s3.amazonaws.com'
AWS_S3_OBJECT_PARAMETERS = {'CacheControl': 'max-age=86400',}
AWS_LOCATION = 'static'

STATIC_ROOT = 'static'
STATIC_URL = f'https://{AWS_S3_CUSTOM_DOMAIN}/{AWS_LOCATION}/'

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'config/static'),
]

当然,为了这篇文章的目的,我用假变量替换了任何敏感变量。我已经阅读了许多教程和其他帖子,并且似乎正确配置了我的 STATIC_URL,但是每当我运行服务器并转到管理页面时,都没有应用任何 css。我认为它没有正确地从存储桶中检索静态文件(它们都上传到 S3 存储桶),但我不知道该怎么做。

标签: pythondjangoamazon-web-servicesamazon-s3

解决方案


我有一个类似的问题,并花了几个小时试图弄清楚。原来我上传的存储桶中的一个静态文件夹在其文件夹名称中有一个下划线,一旦我将下划线更改为连字符就可以了。

以下是文件、文件夹和其他命名准则的参考:

https://www.ezs3.com/public/232.cfm


推荐阅读