django 管理静态文件通过“collectstatic”上传到 s3,但在 运行 本地时不提供

django admin static files are uploaded to s3 via `collectstatic` but not served when running locally

我正在关注 this tutorial 在 s3 上存储静态和媒体文件。这是我在 settings.py 中的静态文件配置的样子:

USE_S3 = os.getenv('USE_S3') == 'TRUE'
## AWS Configuration
if USE_S3:
    # aws settings
    AWS_ACCESS_KEY_ID = os.getenv('AWS_ACCESS_KEY_ID')
    AWS_SECRET_ACCESS_KEY = os.getenv('AWS_SECRET_ACCESS_KEY')
    AWS_STORAGE_BUCKET_NAME = os.getenv('AWS_STORAGE_BUCKET_NAME')
    AWS_DEFAULT_ACL = None # differs from the tutorial because the bucket is private
    AWS_S3_CUSTOM_DOMAIN = f'{AWS_STORAGE_BUCKET_NAME}.s3.amazonaws.com'
    AWS_S3_OBJECT_PARAMETERS = {'CacheControl': 'max-age=86400'}
    # s3 static settings
    AWS_LOCATION = 'static'
    STATIC_URL = f'https://{AWS_S3_CUSTOM_DOMAIN}/{AWS_LOCATION}/'
    STATICFILES_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
else:
    STATIC_URL = '/staticfiles/'
    STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')

STATICFILES_DIRS = (os.path.join(BASE_DIR, 'static'),)

MEDIA_URL = '/mediafiles/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'mediafiles'

设置所有环境变量后,我 运行 python manage.py collectstatic 可以看到文件已成功上传到我的 s3 存储桶。 IE。我在 s3 上看到 static/admin/ 目录,其中包含字体 css 等

然而,当我 运行 服务器在本地时,管理面板丢失了所有 css。鉴于 collectstatic 有效,我不确定为什么 django 找不到管理静态文件。我找到了其他几个教程 here, here and here,但找不到我缺少的内容。对于他们所有人来说,它似乎应该在 运行ning collectstatic 之后“正常工作”...我忘记了什么?

注意 USE_S3 == False

时管理面板正常

所以 s3 存储桶中的对象不是 public。我制作了资产 public,现在可以使用了。