在这个django文件上传表单中我做得不好?

Geo*_*Geo 15 python django validation

这是我的表格:

from django import forms

class UploadFileForm(forms.Form):
    titl    = forms.CharField(max_length=50)
    ffile   = forms.FileField()
Run Code Online (Sandbox Code Playgroud)

这是我的views.py文件:

def handle_uploaded_file(file_path):
    print "handle_uploaded_file"
    dest = open(file_path.name,"wb")
    for chunk in file_path.chunks():
        dest.write(chunk)
    dest.close()

def handle_upload(request):
    c = {}
    c.update(csrf(request))
    if request.method == "POST":
        form = UploadFileForm(request.POST)
        if form.is_valid():
            handle_uploaded_file(request.FILES["ffile"])
            return HttpResponseRedirect("/thanks")
    else:
        form = UploadFileForm()
    c.update({"form":form})
    return render_to_response("upload.html",c)
Run Code Online (Sandbox Code Playgroud)

这是upload.html的内容:

<form enctype="multipart/form-data" method="post" action="/handle_upload/">
    {% csrf_token %}
    {{ form.as_p }}
    <input type="submit" value="Upload it"/>
</form>
Run Code Online (Sandbox Code Playgroud)

每当我尝试提交表单时,我都会收到该字段的"此字段为必填项" ffile.我究竟做错了什么?简而言之,我每次都上传一个文件.

Den*_*zov 44

仅供将来参考.我有同样的错误,虽然我包含request.FILES在表单初始化中.问题出在模板中:我忘enctype="multipart/form-data"了在<form>标签中添加属性.

  • 上帝,在读这篇文章之前我尝试了多少不同的东西:)你会想我会学习...... (7认同)

Dan*_*man 30

    form = UploadFileForm(request.POST, request.FILES)
Run Code Online (Sandbox Code Playgroud)