【问题标题】:How to add image for image field for a model instance in django admin panel on heroku?如何在heroku的django管理面板中为模型实例的图像字段添加图像?
【发布时间】:2022-01-25 14:38:16
【问题描述】:

我添加了几本关于 heroku 数据的书籍。每个模型都显示在 heroku 应用程序网站上及其图像。我的模型有“图像”字段。我从我的 PC 文件夹中获取这些图像,当我在 2-3 小时后打开这个应用程序时,书籍图像消失了。我认为这是因为我关闭了拍摄这些图像的电脑。我该如何正确地做到这些图像不会消失?

【问题讨论】:

    标签: django heroku deployment


    【解决方案1】:

    我想是因为我关掉了我拍摄这些照片的电脑

    这可能不是,因为 Heroku 无权访问您计算机上的文件。


    当您将文件上传到 Django 管理员时,它会查看 DEFAULT_FILE_STORAGE 设置配置以确定如何存储该文件。 By default,它使用django.core.files.storage.FileSystemStorage,这意味着它正在将那些上传的文件写入dyno的文件系统中MEDIA_ROOT定义的位置。

    问题是,测功机是短暂的,它们可以在没有任何警告的情况下被销毁、重新启动和移动,which replaces your filesystem。这意味着那些上传的文件只是被删除而无影无踪,但ImageField 引用仍然认为它们在那里。

    此问题的解决方案是更新项目的 DEFAULT_FILE_STORAGE 以使用永久的东西,例如 s3 兼容的对象存储。在 Heroku 和 Django 领域,一个常见的解决方案是使用 django-storagesHeroku's Bucketeer add-on。此解决方案将您的文件上传到持久性数据存储,在 dyno 重新启动后仍然存在,而不是写入经常被删除的 dyno 文件系统。

    我知道这可能会令人生畏,所以我写了 this article,对 Heroku + Bucketeer 过程进行了很好的描述。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-16
      • 2015-10-25
      • 2017-08-18
      • 2011-10-11
      • 1970-01-01
      • 2022-12-21
      • 2021-12-18
      • 2018-11-13
      相关资源
      最近更新 更多