Django:无法将上传的图像绑定到表单 ImageField()

Posted

技术标签:

【中文标题】Django:无法将上传的图像绑定到表单 ImageField()【英文标题】:Django: can't bind an uploaded image to a form ImageField() 【发布时间】:2011-05-14 10:34:23 【问题描述】:

这是我的问题,我创建了这个表单:

class SettingsForm(forms.Form):  
    ...  
    logo = forms.ImageField()  
    ...

上传工作正常,我设法显示图像,但无法将其绑定到表单。这是我所做的:

data = ...  
files = 'logo': SimpleUploadedFile('logo.jpg', logo.read())  
form = SettingsForm(data=data, files=files)  

徽标对象是ImageFieldFile。我已经在shell中测试了read方法,没关系。我没有显示页面的警告,只有“未选择文件”。

感谢您的帮助。抱歉这篇文章的格式,我是***和django的新手。

【问题讨论】:

SimpleUploadedFile 第三个参数 content_type 默认为 'text/plain',会不会是问题所在? 仍然无法使用 'image/jpeg' 【参考方案1】:

对此我不确定,但根据 django 文档,在绑定表单上,数据和文件不是 kwargs,而是 args,所以试试这个:

form = SettingsForm(data, files)

【讨论】:

不幸的是,这段代码正在工作: if request.method == 'POST': form = SettingsForm(data=request.POST, files=request.FILES,...) 我正在使用 kwargs因为我在表单代码中调用 Super() 。你看不到它,因为我没有粘贴我的表单的完整代码,是吗?谢谢你的帮助

以上是关于Django:无法将上传的图像绑定到表单 ImageField()的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 django-storages 将图像上传到亚马逊 S3?在管理员中上传有效,但在网站表单中无效

通过上传表单将图像上传到Django用户个人资料

将 JavaScript 生成的图像上传到 Django

docker容器中的django + nginx:无法上传任何带有表单的文件

如何将图像上传到 Django

Django 表单API详解