几乎全部都是按照官方文档来的不知道为什么会fail?根据下面的报错信息可以看出是form不合法。参考的官方文档
这是上传文件的表单
class UploadFileForm(forms.Form):
file = forms.FileField()
这是views.py的处理函数
def upload_file(request):
if request.method == 'POST':
form = UploadFileForm(request.POST, request.FILES)
if form.is_valid():
handle_uploaded_file(request.FILES['file'])
return HttpResponse('success')
else:
return HttpResponse('failed')
else:
form = UploadFileForm()
return render(request, 'backend/upload.html', {'form': form})
def handle_uploaded_file(f):
with open('some/file/name.txt', 'wb+') as destination:
for chunk in f.chunks():
print 'write successfully'
destination.write(chunk)
这是upload.html
<form action="{% url 'backend:upload' %}" method="post">
{% csrf_token %}
{{ form }}
<button type="submit">Submit</button>
</form>
但是总是fail,为什么这里form不合法呢?
如果需要上传文件,需要在表单中指定
enctype="multipart/form-data"
属性,把表单改为:请仔细阅读文档内容,其中有提及这一点。