django,普通帖子表格不是将文件数据发送到服务器,

时间:2012-11-07 09:36:39

标签: python django file-upload submit

我想知道为什么会这样:

我在POST中发送带有表单的文件数据,但始终说:

Key 'file' not found in <QueryDict:
{
 u'datum': [u'aaa'],
 u'csrfmiddlewaretoken': [u'USAbRrgU92yj7KFpZHuxf9bWufgnwC4N'], 
 u'anzeige': [u' aaaa'], 
 u'titel': [u' aaa']
}

这是我的HTML:

<form id="myform" action="/anzeige_save/" method="post" enctype="multipart/form-data">    
{% csrf_token %} 
<textarea style="width: 450px" id="titel"  name="titel"> </textarea>
<textarea name="anzeige" id="anzeige" 
    style="height: 180px; width: 450px"> </textarea>  
<input type="text" id="datum" name="datum" >
<input type="file" id="file" name="file" size="40" maxlength="100000">
<input type="button" value="speichern" 
    onclick="javascript:submitform()" />
</form>

<script>
  function submitform(){
  document.forms["myform"].submit();
  }
</script>

部分我的观点是:

anzeige=Anzeige(titel=request.POST['titel'], 
                anzeige=end_anzeige, 
                date=datetime.datetime.now(), 
                datum=request.POST['datum'],
                file=request.FILES['file'])
anzeige.save()

我实际上正确提交,表单也应该像其他查询一样在QueryDict中提交文件。有人可以帮助我找出我在这里失踪的东西吗?

谢谢

1 个答案:

答案 0 :(得分:2)

  1. 使用ModelForm 代替表单,除非您有充分理由不这样做。

  2. 如果表单未验证,您的HTML将显示空白表单,但未提及错误或以前输入的值,请参阅customizing a form template以了解正确用法。

  3. request.POST ['file']不存在是正常的,它位于request.FILES ['file']中,但必须先将其保存才能使用在一个模型中。如果您使用ModelForm,它是自动的。否则,请参阅handling uploaded files with a model