文件上传表单无效

Sha*_*e G 1 django validation file-upload

我有一个文件上传表单,无法成功验证。表单加载正常,我可以上传文件,但“提交”后我无法在视图中通过 Fileform.is_valid() 。我主要从 Django 1.9文件上传文档中复制了这个视图以及模型和表单模型,但我一定遗漏了一些东西。

view.py 是,

def file_sharing_form(request):
if request.method == "POST":
    file = FileForm(request.POST, request.FILES)
    if file.is_valid():
        fform = file.save(commit=False)
        fform.author = request.user
        fform.pub_date = timezone.now()
        fform.submitted_date = timezone.now()
        fform.approved = False
        fform.save()
        # email admin
        admin_email = User.objects.all().filter(is_superuser = True)
        subject = 'File submitted to QQIresources, awaiting approval'
        to_email = admin_email[0].email
        from_email = request.user.email
        message = 'A file has been submitted to QQIresources by ' + str(request.user) + ' and is awaiting admin approval. \n \n Title: ' + str(fform.title) + '\n Author: ' + str(fform.author) + '\n Description: ' + str(fform.description)
        send_mail(subject, message, from_email, [to_email])
        return redirect('init')
fileform = FileForm()
return render(request, 'file_form.html', {'fileform': fileform})
Run Code Online (Sandbox Code Playgroud)

bin*_*.py 6

我猜你在 html 中错过了 enctype="multipart/form-data" 。请将其添加到任何类型的文件上传的表单定义中。

<form action="{% url 'your_url' %}" enctype="multipart/form-data">
    <input type="file">
</form>
Run Code Online (Sandbox Code Playgroud)