Файловое поле Django, не включающее загруженный файл в запрос вывода формы

#python #html #django #filefield

#python #HTML #django #файловое поле

Вопрос:

У меня возникли проблемы с получением доступа к простому загруженному файлу, который мне нужно проанализировать, не сохраняя его. Поскольку файл не нужно сохранять, я не создал для него модель. Все остальные потоки в этом состоянии указывают тип кодировки формы html, тег имени являются основными причинами запроса.ФАЙЛЫ не отображаются — я обратился к ним, и до сих пор нет запроса.ФАЙЛЫ захватываются.

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’], но на данный момент запрашивают.ФАЙЛЫ не существуют. Любые советы по решению этой проблемы будут оценены.

Ответ №1:

Скорее всего, проблема просто в том, что вы пытаетесь получить доступ к файлу, используя неправильное имя. Поле в форме имеет имя docfile . То же имя, которое оно будет иметь в request.FILES массиве.

Возможно, вы просто неправильно поняли сообщение об ошибке, в котором говорится, что file in отсутствует FILES .

И form.is_valid правильно обращаться к массиву ФАЙЛОВ, поэтому форма считается действительной.

Ответ №2:

Так что, по-видимому, единственное, чего не хватало, — это поиск запроса.ФАЙЛЫ [‘docfile’]

не запрос.ФАЙЛЫ [‘file’] . Это работает! Надеюсь, это кому-то поможет