Django保存带有图像文件问题的表单
Posted
技术标签:
【中文标题】Django保存带有图像文件问题的表单【英文标题】:Django saving Form with Image File Issue 【发布时间】:2015-06-23 03:39:29 【问题描述】:我正在尝试从简单的 HMTL 表单上传图像文件,但出现以下错误:
“MultiValueDict”对象没有属性“_committed”
我没有使用表单,因为我需要一次上传许多文件,而据我所知,Djangoforms 只允许一次上传一个文件。
所以使用正常的方式似乎行不通...
代码结构如下:
Models.py
class ProfileImage(models.Model):
account_id = models.IntegerField(primary_key=True)
image = models.ImageField(upload_to='profile/%Y/%m/%d')
profile = models.CharField(max_length=512, blank=True)
description = models.CharField(max_length=255, blank=True)
class Meta:
managed = False
db_table = 'ProfileImage'
HTML
<form id="fileinfo" name="fileinfo" action="profileimage" enctype="multipart/form-data" method="post" >
% csrf_token %
<table>
<tr>
<input type="file" size="60" id="myfile" name="myfile" multiple="false" value="Profile Picture"
accept="image/gif, image/jpeg, image/png">
</tr>
<tr>
<input type="submit" value="Upload" />
<div id="accresult" name="accresult"></div>
</tr>
</table>
</form>
Views.py
def profile_image(request):
profile_image = ProfileImage(account_id=request.session.get('memberid', False), image=request.FILES, profile='', description='')
try:
print 'Userid: ', profile_image.account_id
print 'File sent...', profile_image.image
profile_image.save()
except Exception as err:
print 'Error: ', err.message
useraccount = request.session.get('useraccount', False)
return render(request, 'profileImage.html', 'useraccount': useraccount, 'image': profile_image)
参数正确到达,但是当尝试save()
时出现错误,我刚刚尝试了多种方式,非常感谢您的帮助。
【问题讨论】:
错误是什么? print 'Error: ', err.message 显示什么? 【参考方案1】:request.FILES
是一个文件列表。您需要指定要传递给image
参数的文件。喜欢这个。
profile_image = ProfileImage(account_id=request.session.get('memberid', False), image=request.FILES[0], profile='', description='')
这不是很好,因为如果没有文件,它会引发异常。您可能需要使用Django form 来更好地处理表单。
【讨论】:
以上是关于Django保存带有图像文件问题的表单的主要内容,如果未能解决你的问题,请参考以下文章
无法将图像上传到 Django 项目,获取表单对象没有属性“保存”