django - Django 和 S3 Bucket aws Admin 静态文件
问题描述
我有一个 django 项目,我想配置 S3 Bucket 以存储静态文件。创建后,站点会加载,但不会从存储桶中检索文件,因此即使管理页面也没有 CSS,如屏幕截图所示:
这是用于存储桶配置的设置:
STATIC_URL = '/static/'
MEDIA_URL = '/images/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static')
]
MEDIA_ROOT = os.path.join(BASE_DIR, 'static/images')
AWS_ACCESS_KEY_ID = '************'
AWS_SECRET_ACCESS_KEY = '********************'
AWS_STORAGE_BUCKET_NAME = 'BUCKET_NAME'
AWS_S3_FILE_OVERWRITE = False
AWS_DEFAULT_ACL = None
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
STATICFILES_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
我将(存储)添加到已安装的应用程序中。存储桶策略 (CORS) 设置为:
[
{
"AllowedHeaders": [
"*"
],
"AllowedMethods": [
"GET",
"PUT",
"POST",
"DELETE"
],
"AllowedOrigins": [
"*"
],
"ExposeHeaders": [
"x-amz-server-side-encryption",
"x-amz-request-id",
"x-amz-id-2"
],
"MaxAgeSeconds": 3000
我也试过(py manage.py collectstatic)没有手动上传,一个管理文件夹出现在桶中,但即使使用“Collectstatic”我仍然有同样的问题(没有css,没有图像,......)
我在圈子里跑,找不到解决方案,如果有人能提供帮助,我将不胜感激。
先感谢您
解决方案
尝试将完整的 aws 链接添加到您的媒体和静态网址:
STATIC_URL = "https://%s/%s/" % (AWS_S3_CUSTOM_DOMAIN, AWS_LOCATION)
MEDIA_URL = "https://%s/%s/" % (AWS_S3_CUSTOM_DOMAIN, AWS_LOCATION_MEDIA)
确保添加这些字段希望它有效。
AWS_S3_SIGNATURE_VERSION = 's3v4'
AWS_S3_REGION_NAME = 'us-east-2'
AWS_S3_ADDRESSING_STYLE = "virtual"
此外,检查浏览器中生成的 aws 的静态文件链接以查看响应内容可能会进一步帮助您。
推荐阅读
- python - 使用 gitlab runner 时 Python 不被识别为命令
- email - 在 Dynamics CRM 中显示重复电子邮件的队列项目?
- r - 将列拆分为 R 中的数据集
- c++ - 卡在 if 语句中,以检查列表中的数字
- spring - 如何修复“UnsatisfiedDependencyException:创建名称为 .EurekaServerAutoConfiguration' 的 bean 时出错”
- java - Play 2.5 与 JDK 11 兼容吗?
- java - 如何从 play 框架中的 application.conf 文件中读取属性?
- reactjs - setState 改变状态,但文本字段中的值没有改变
- java - CRLF 序列的不正确中和('CRLF Injection')(CWE ID 93)
- r - 展开 data.table 以便每个 ID 的每个模式匹配一行