python - django无法上传文件?

查看:136
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆