Django:存储图像的最佳实践(URLField 与 ImageField)

Django: Best Practice for Storing Images (URLField vs ImageField)

项目中有些情况我想将图像存储在模型上。

例如:

最近我一直在使用 AWS S3 通过 ImageField 上传进行文件存储(主要托管在 Heroku 上)。

我觉得有比我一直在做的更好的文件存储方式。

对于某些事情(比如上面的示例),我认为从更公开的 url 获取图像 url 比占用 space 更有意义在我自己的数据库中。

对于 Django 社区中构建和部署过真正专业项目的专家,您通常是通过 ImageField 将文件直接存储到 Django 媒体文件夹中吗?

或者您通常使用 URLField,然后从 API 中提取 url 或从网络中提取图像 link(例如,继续Google 图片,右键单击并复制然后粘贴图片 URL)?

奖励:您的图像存储设置是什么样的?

希望这是有道理的。

提前致谢!

标准就是您所描述的,使用 AWS S3 之类的东西来存储实际图像并处理数据库中的 URL。以下是几个原因:

  1. 很便宜。喜欢真的便宜
  2. 不是让您的 Web 服务器提供文件,而是将其卸载到客户端(例如,他们的浏览器从 S3 抓取文件)
  3. 如果您使用的是临时系统(如 Heroku),您唯一的选择是使用类似 S3 的系统。
  4. 控制。当然,您可以从不受您管理的其他地方拉取图像 link。但这没有扩展。如果该服务器离线会怎样?如果他们把那张照片拿下来怎么办?这样,您就可以控制对象发生的情况。

一个相当大的互联网公司的例子是 VSCO。他们每天上传相当数量的照片,并使用 AWS 处理这些照片。