【发布时间】:2022-01-19 05:45:55
【问题描述】:
每次我上传文件时,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']}>
谢谢!
【问题讨论】:
-
你在哪里得到
<QueryDict: {'csrfmiddlewaretoken': ['b123ASDDoddfkkdzrPXa5P2kKEsp7dBASXQWXfffwwdffgKGLGVVffML'], 'title': ['as'], 'file': ['UsabilityTest.pdf']}>形式有效块或形式无效? -
将
enctype="multipart/form-data"添加到模板中的表单标签 -
你的
handle_uploaded_file函数是什么?