python - django无法上传文件?
本文介绍了python - django无法上传文件?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
几乎全部都是按照官方文档来的不知道为什么会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"
属性,把表单改为:
<form action="{% url 'backend:upload' %}" method="post" enctype="multipart/form-data">
{% csrf_token %}
{{ form }}
<button type="submit">Submit</button>
</form>
请仔细阅读文档内容,其中有提及这一点。
这篇关于python - django无法上传文件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文