2014-11-21 99 views
0

我有一个input字段对应于Django模板中的Django ImageField。渲染时,HTML看起来像:从POST请求丢失图像输入

<form action="/accounts/username/" 
     method="post" 
     id="profile_form" 
     enctype="multipart/form-data"> 
</form> 
... (other input fields and elements) 
<input form="profile_form" id="id_profile_pic" name="profile_pic" type="file" /> 

相应ViewUpdateView。我发现request.FILES为空,request.cleaned_data包含'profile_pic': None

我用firebug来跟踪POST数据。它包含其他领域,但不包括profile_pic

我的罪过是什么?为什么文件没有上传?

回答

0

事实证明,我以某种方式复制了呈现的HTML错误!真正的问题是输入中使用的表单ID不正确,这是文件没有上传的原因。

0

这是因为代码form="profile_form"?我会试着把<input>放在<form>里面,就像传统模式一样,因为我的第一个猜疑是不寻常的形式结构是责任。

让我知道如果我错了。

+0

不幸的是,你错了。所有其他输入字段在窗体标签之外类似地构造并且仍然被发送到服务器。我还应该提到,出于迷信的考虑,我尝试将文件输入标签放在表单中,但这也没有帮助。 请参阅form的属性:https://developer.mozilla.org/en-US/docs/Web/HTML/Element/Input#Attributes – battery 2014-11-21 10:51:54

+0

我的第二个猜测是将_just_的输入类型,例如。到文本输入,并验证它传输。然后你确认问题纯粹是关于文件输入的,这很可能无论如何都是因为它们需要很多不寻常的处理。 – 2014-11-21 10:55:13

+0

Re:'form'属性:今天我学到了一些东西! – 2014-11-21 10:55:51