【问题标题】:Django Temporary ImagesDjango 临时图像
【发布时间】:2023-03-20 03:07:01
【问题描述】:

你好,我有这种类型的模型

class Post(models.Model):
    title = models.CharField()
    image = models.ImageField()
    # other fields

为了创建一个新帖子,我需要这样的流程:

  • 在新帖子页面1中,用户选择照片并上传 (提交)
  • 在新帖子页面 2 中,用户可以看到照片并填写“标题”等其他字段

我的问题是如何上传照片并将其显示在下一页中,而无需使用图像字段创建新的 Post 对象。我应该将图像保存在临时目录中吗?在这种情况下,如何保留引用并在第二页中使用它?

谢谢。

【问题讨论】:

    标签: python django django-models


    【解决方案1】:

    有几种解决方案

    1. 定义另一个模型以仅保存图像,并在 Post 模型中添加 OneToOneField。在提交 page1 时,创建此图像模型的实例并将其作为图像字段放入 page2。
    2. 使用html5文件API,可以在图片字段中引用本地文件。因此,您可以使用本地客户端路径在 page2 上显示图像,而无需将其存储在服务器上。参考:View image selected from file-system on client-side before upload?

    【讨论】:

      【解决方案2】:

      首先阅读相关文档,以便了解上传文件会发生什么: https://docs.djangoproject.com/en/dev/topics/http/file-uploads/

      恕我直言,最简单的解决方案是

      1/ 将上传的文件保存在某个临时目录中 - 只要确保您可以以一种或另一种方式提供内容(直接通过前端网络服务器,或者如果您想更多地控制谁可以访问此内容,则通过自定义视图) ),

      2/ 以一种或另一种方式将临时文件路径和 url 传递给“下一个”视图(隐藏的表单字段、会话...)。

      【讨论】:

        【解决方案3】:

        我曾经有一个表来存储图像(实际上是任何文件:))。每个图像都链接到对象 (FK) 并具有状态 - 草稿、已批准、已删除。所以我不使用临时目录,只是更改图像表中的状态。

        【讨论】:

          猜你喜欢
          • 2013-02-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-05-11
          • 2011-07-13
          • 2016-12-13
          相关资源
          最近更新 更多