2016-09-29 3 views
0

저장하지 않고 구문 분석해야하는 간단한 업로드 파일에 액세스하는 데 문제가 있습니다. 파일을 저장할 필요가 없기 때문에 모델을 만들지 않았습니다. 이 상태의 다른 모든 스레드는 html 형식의 인코딩 형식 인 name 태그를 사용하여 request.FILES가 표시되지 않는 주된 이유입니다. 이러한 메시지를 처리했지만 아직 요청이 없습니다. 캡처되는 파일이 있습니다.Django FileField가 양식 출력 요청에 업로드 된 파일을 포함하지 않음

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()) 

나는 그것이 내가 할 수있다 작업을 진행하는 경우 같아요 요청에 포함되지 않은 파일을 찾습니다. 파일 [ 'file']이 (가) 있지만 요청에 있습니다. 파일 [ 'docfile']이 시점에서 request.FILES는 존재하지 않습니다. 이 문제를 해결하는 데 도움이되는 정보를 제공해 주시면 감사하겠습니다.

답변

1

대부분의 경우 문제는 잘못된 이름을 사용하여 파일에 액세스하려는 것입니다. 양식 필드의 이름은 docfile입니다. 동일한 이름으로 request.FILES 배열에 포함됩니다.

아마도 에 file이 없다는 오류 메시지가 오해되었을 것입니다.

그리고 form.is_valid은 FILES 배열에 올바르게 액세스합니다. 그 때문에 양식이 유효한 것으로 간주됩니다.

0

그래서 분명히 유일한 것은 누락은 [ 'DOCFILE']

하지 request.FILES [ '파일'] request.FILES 찾고 있었다. 그것은 작동합니다! 희망이 누군가에게 도움이 될