【问题标题】:Django how ImageField and BinaryField works for imageDjango ImageField 和 BinaryField 如何为图像工作
【发布时间】:2018-01-02 01:30:47
【问题描述】:

所以我想问一下这两个字段是如何工作的。 正如我的朋友告诉我的,他的 ios 会向我发送字节格式的图像,如果我使用 imageField 而不是 BinaryField 有关系吗?

我确实尝试将 Binaryfield 添加到我的用户模型中,但是在 django admin 和 django rest framework api 上对其进行测试时,它不起作用

在 django admin 中:二进制字段没有出现在其中

在 django rest 框架中:得到一个错误,说二进制字段的可编辑是错误的。设置 binaryfield editable=True 也不起作用。

django中关于Binaryfield的文档也不多。

谁能向我解释一下这两个领域是如何工作的?将字节格式发送到图像字段是否有效?

【问题讨论】:

    标签: django image django-rest-framework


    【解决方案1】:

    ImageField 负责处理图片。否则,ImageField 和 FileField 是相同的。两者都存储了物理卷文件的路径。 而且两者都不符合要求。 数据库需要一个 BinaryField:

    models.BinaryField (blank = true, null = true, editable = true)
    

    到目前为止一切顺利。使用editable = True,该字段应出现在管理界面中。但要看到图片,还得再变形

    encoded = b64encode (model.image) .decode ('ascii')
    

    例如倒入表格中。

    render_to_string ('lib / forms / imageform.html', {"image": encoded}, request).
    

    我的表单元素如下所示:

    <form id = "{{form.fid}}" class = "form-horizontal data-form" enctype = "multipart / form-data" method = "post">
         <img src = "data: image / png; base64, {{image}}">
    </ Form>
    

    【讨论】:

      【解决方案2】:

      ImageFieldFileField 是您应该用来保存图像的。这两个字段都只是将文件路径(例如:/static/user_images/smith.jpg)保存到存储在服务器上的物理图像中。 有关更多详细信息,请阅读 FileFieldImageField

      BinaryField 不用于保存图像。 For more detail

      注意:您永远不会将物理文件存储到数据库中。那就是您不要将BinaryField 用于图像。

      【讨论】:

      • 我知道,但是我的队友说发送给我的图像是字节格式的。只是想知道 Imagefield 或 filefield 是否适用于它。如果这两个字段保存了文件路径,这是否意味着它没有将图像保存到数据库?那不是很糟糕吗?
      • 通常图像不会存储到数据库中。我不确定在哪种情况下有人将图像保存到数据库。
      • 好的,所以字节文件将保存到aws中的文件路径中。不过,使用什么字段?因为我没有直接保存图像,它保存了字节字符串。我只在用户请求时将其转换为图像
      • 您可以使用FileField保存任何物理文件,这将保存到它的路径,在数据库中
      • 对不起,Amar,但我必须先仔细检查一下。我正在存储字节字符串,而不是物理文件。它仍然适用于FileField 吗?这是最让我困惑的,因为只有 ImageFieldFileField 是唯一具有保存到路径功能的。
      猜你喜欢
      • 2021-11-18
      • 2012-02-08
      • 2012-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多