Django FileField不包括表单输出请求中的上传文件

时间:2016-09-29 21:23:36

标签: python html django filefield

我无法访问一个简单的上传文件,我需要解析它而不保存它。由于文件不需要保存,我没有为它制作模型。这个状态下的所有其他线程的html表单编码类型,名称标签是request.FILES没有出现的主要原因 - 我已经解决了这些问题,但仍然没有请求.FILES被捕获。

forms.py

class DataExportForm(forms.Form):
    docfile = forms.FileField(label='Select a template',help_text='Extracted info will be returned') 

HTML

<html>
<body>
<form action="." method="post" enctype="multipart/form-data">{% csrf_token %}

<tr><th><label for="id_docfile">Select a template:</label></th><td><input id="id
_docfile" name="docfile" type="file" />
<button type="submit" name="action">Upload</button>
<br /><span class="helptext">Zip file wil
l be returned with data</span></td></tr>   
</form>
</body>
</html> 

views.py

if request.method=='POST':        
    form=DataExportForm(request.POST, request.FILES)
    if form.is_valid():
        #Code runs OK till here but request.FILES does not exist. 
        groupList=extractTemplateNames(request.FILES['file'].read())

我想如果我开始工作,我可能会发现该文件不在request.FILES ['file']但在request.FILES ['docfile']中,但此时request.FILES不存在。任何解决此问题的提示都将受到赞赏。

2 个答案:

答案 0 :(得分:2)

最有可能的问题是,您尝试使用错误的名称访问文件。表单上的字段名称为docfile。它将在request.FILES数组中具有相同的名称。

可能您只是误解了一条错误消息,指出file中没有FILES

form.is_valid正确访问FILES数组,这就是为什么表单被认为是有效的。

答案 1 :(得分:0)

显然,唯一缺少的就是寻找请求.FILES [&#39; docfile&#39;]

不是request.FILES [&#39; file&#39;]。有用!希望这对某人有帮助