如何解决django admin 静态文件通过 `collectstatic` 上传到 s3,但在本地运行时不提供服务
我关注 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 和 here,但我找不到我遗漏的内容。对于他们所有人来说,它似乎应该在运行 collectstatic
后“正常工作”......我忘记了什么?
注意当USE_S3 == False
解决方法
所以 s3 存储桶中的对象不是公开的。我公开了资产,现在它正在运行。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。