【发布时间】:2019-11-26 01:28:54
【问题描述】:
我正在通过 django-storages 为我的 Django 项目中的图像使用 AWS S3 存储桶。
如何在通过模型 ImageField 上传的模板中显示图像非常清楚。只是做例如
<img src="{{ model.image.url }}">
但是,如果我直接在 S3 上上传图片(例如用于网站徽标)并希望在模板中显示它怎么办?硬编码绝对 Amazon S3 路径的更好方法:
<img src="https://myapp.s3.amazonaws.com/home/logo.png">
有没有什么方法可以只使用相对的“/home/logo.png”而不用硬编码amazonaws子域?
编辑:目前这是我的 settings.py 文件中的内容:
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
STATIC_URL = '/static/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
我的静态文件收集在 Heroku 上的 /staticfiles/ 目录中,所有模型 ImageField 上传最终都在 S3...
当我按照建议的here 执行python manage.py collectfiles 时,所发生的只是所有静态文件也被复制到我的本地/staticfiles/ 目录中。
【问题讨论】: