django - Heroku + S3 AWS + Django != 没有图像
问题描述
我试图将我的应用程序放到网上,但似乎没有显示图像文件。也许你能帮忙?我在 S3 AWS 的存储桶中需要图像,但仍然没有出现。虽然当我尝试在网页上打开图像时,我被发送到亚马逊网站。我收到了这条信息:
InvalidRequest
不支持您提供的授权机制。请使用 AWS4-HMAC-SHA256。8CF0C70490DEFEE2 dtBKlPBbw5L6pM6mGyd4YaqC4amay/c2tccfhhStjujVGG2qdrvQwD6vGloJZWQle9A5Cwr3Rws=
Here is my settings.py
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
STATIC_TMP = os.path.join(BASE_DIR, 'static')
STATIC_URL = '/static/'
os.makedirs(STATIC_TMP, exist_ok=True)
STATICFILES_DIRS = [
os.path.join(BASE_DIR, "static"),
]
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
AWS_ACCESS_KEY_ID = "####"
AWS_SECRET_ACCESS_KEY="####"
AWS_STORAGE_BUCKET_NAME="####"
AWS_S3_FILE_OVERWRITE = False
AWS_DEFAULT_ACL = None
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
django_heroku.settings(locals())
解决方案
您的 MEDIA_URL 不正确。
尝试这样的事情(我假设你希望你使用静态资源和媒体):
AWS_AUTO_CREATE_BUCKET = True
AWS_STORAGE_BUCKET_NAME = "my_bucket"
DEFAULT_FILE_STORAGE = "storages.backends.s3boto3.S3Boto3Storage"
STATICFILES_STORAGE = "storages.backends.s3boto3.S3Boto3Storage"
STATIC_LOCATION = "resources/"
MEDIA_LOCATION = "media/"
AWS_BUCKET_ACL = "public-read"
AWS_QUERYSTRING_AUTH = False
AWS_S3_REGION_NAME = "your-bucket-region"
AWS_S3_CUSTOM_DOMAIN = f"{AWS_STORAGE_BUCKET_NAME}.s3.amazonaws.com"
STATIC_URL = f"https://{AWS_S3_CUSTOM_DOMAIN}/{STATIC_LOCATION}"
MEDIA_URL = f"https://{AWS_S3_CUSTOM_DOMAIN}/{MEDIA_LOCATION}/"
推荐阅读
- java - Android应用程序中的Tensorflow Lite自定义对象检测模型错误
- javascript - 使用 TypeScript 进行迭代
- quarkus - 在运行时配置数据源类型
- android - Android应用程序可以在应用程序启动后请求麦克风权限吗
- html - 为什么相同的 HTML 代码在显示时会给出不同的结果
- drake - 实现一个允许在曲线路径中运动的关节
- python - 服务未在引导时启动
- c++ - Docker:构建后在容器内运行二进制文件 - 权限被拒绝
- mongodb - 在 docker 的 Mongo 容器中找不到 DB
- c++ - 任务完成,答案不被接受