Как загрузить файл из html в Django формы
Каждый раз, когда я загружаю файл, forms.is_valid()
= False.
ниже представлен мой views.py:
def upload_pdf(request):
if request.method == 'POST':
form = UploadFileForm(request.POST, request.FILES)
if form.is_valid(): # this is always FALSE!!!
# write file into folder first
text = handle_uploaded_file(request.FILES['file'])
print("text")
return HttpResponseRedirect('pdfExtractor_app/result.html')
else:
print("form not valid")
form = UploadFileForm()
return render(request, 'pdfExtractor_app/upload.html', {'form': form})
Вот мой файл forms.py:
from django import forms
class UploadFileForm(forms.Form):
title = forms.CharField(max_length=50)
file = forms.FileField()
Вот мой файл upload.html:
<body>
<form method="POST" class="post-form">
{% csrf_token %}
{{ form.as_p }}
<button type="submit" class="save btn btn-default">Save</button>
</form>
</body>
Я ввожу название и файл, но форма никогда не считывается в views.py.
Вот что я получаю form.errors
<ul class="errorlist"><li>file<ul class="errorlist"><li>This field is required.</li></ul></li></ul>
[15/Dec/2021 21:10:56] "POST /upload_pdf/ HTTP/1.1"
Вот что есть в Querydict:
<QueryDict: {'csrfmiddlewaretoken': ['b123ASDDoddfkkdzrPXa5P2kKEsp7dBASXQWXfffwwdffgKGLGVVffML'], 'title': ['as'], 'file': ['UsabilityTest.pdf']}>
Спасибо!
Добавление enctype="multipart/form-data"
к тегу формы в шаблоне помогло и сделало form.is_valid()
равным true.
Я изменил uploads.html на:
<body>
<form method="POST" class="post-form" enctype="multipart/form-data">
{% csrf_token %}
{{ form.as_p }}
<button type="submit" class="save btn btn-default">Save</button>
</form>
Спасибо всем за полезные отзывы в комментариях!