Django临时图像

时间:2012-06-26 11:07:28

标签: python django django-models

您好我有这种型号

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

为了创建一个新帖子,我会像这样流:

  • 在新帖子1中,用户选择照片并上传 (提交)
  • 在新的帖子第2页中,用户可以看到照片并填写其他字段,例如“title”

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

感谢。

3 个答案:

答案 0 :(得分:1)

有几种解决方案

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

答案 1 :(得分:0)

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

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

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

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

答案 2 :(得分:0)

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