#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’] . Это работает! Надеюсь, это кому-то поможет