所以我想问这两个字段是如何工作的。 正如我的朋友告诉我他的ios会向我发送字节格式图像,如果我使用imageField而不是BinaryField,这有关系吗?
我确实尝试将二进制字段添加到我的用户模型中,但是当在django admin和django rest framework api上测试它时,它会工作
在django admin中:二进制字段没有出现在其中
在django rest框架中:得到一个错误,表示二进制字段的editable为false。设置binaryfield editable = True也不起作用。
关于django中Binaryfield的文档也不多。
任何人都可以向我解释这两个领域是如何运作的?发送字节格式到图像域工作?
答案 0 :(得分:1)
ImageField
或FileField
是您应该用来保存图片的内容。这两个字段都只是将file_path(例如:/static/user_images/smith.jpg)保存到服务器上存储的物理映像中。
有关详细信息,请阅读此FileField和ImageField
BinaryField
不用于保存图片。 For more detail
注意:您从未将物理文件存储到数据库。那就是你不能使用BinaryField
作为图像。
答案 1 :(得分:0)
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>