通过 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 图像 url 重定向是通过 HTML 模板的链接而不是媒体文件?
django cloudinary 通过 url 上传远程图像 - 文件名无效