通过 django shell 保存图像/文件

Posted

技术标签:

【中文标题】通过 django shell 保存图像/文件【英文标题】:Saving image/file through django shell 【发布时间】:2013-02-26 05:54:06 【问题描述】:

我正在尝试通过 django shell 保存图像文件。

我的model.py 是:

class user(models.Model):
    name = models.CharField(max_length=20)
    pic = models.ImageField()

管理员和表单一切正常,但我想使用 shell 保存图像:

类似

>>> user1 = User(name='abc', pic="what to write here")

【问题讨论】:

***.com/questions/1232434/… 【参考方案1】:

对我有用的是:

django.core.files.uploadedfile import UploadedFile
user1=User(name='abc')
user1.pic.save('abc.png', UploadedFile(file=open('/tmp/pic.png', 'rb'), content_type='image/png'))

【讨论】:

【参考方案2】:
from django.core.files import File
user1=User(name='abc')
user1.pic.save('abc.png', File(open('/tmp/pic.png', 'rb')))

请使用“rb”而不是“r”。如果您使用的是python3。

【讨论】:

这应该是对原始答案的评论。【参考方案3】:
from django.core.files import File

user1=User(name='abc')
user1.pic.save('abc.png', File(open('/tmp/pic.png', 'r')))

您最终会将图像abc.png 复制到upload_to 目录中 在ImageField 中指定。

在这种情况下,user1.pic.save 方法还将保存user1 实例。 保存ImageField 的文档可以在这里找到https://docs.djangoproject.com/en/dev/ref/files/file/

【讨论】:

我使用这种方法尝试保存 png,并收到此错误:codecs.charmap_decode(input,self.errors,decoding_table)[0] odeError: 'charmap' codec can't decode byte 0x8f in position 207: char to <undefined>你知道如何解决这个问题吗? @AllTradesJack 使用 'rb' 而不是 'r' 标志,正如 Roy 在下面回答的那样

以上是关于通过 django shell 保存图像/文件的主要内容,如果未能解决你的问题,请参考以下文章

Django 测试因 InternalError 失败:没有这样的保存点。 DB:Postgres,通过 mysql

Django 在生产中找不到通过 CSS 文件链接的图像

Django 图像 url 重定向是通过 HTML 模板的链接而不是媒体文件?

django cloudinary 通过 url 上传远程图像 - 文件名无效

将通过 ajax 上传的文件保存到 Django 模型 ImageField

js 上传文件,通过django存储到数据库,保存类型为blob类型