request.FILES 为空,但表单标记包含多部分数据加密

request.FILES is empty though form tag contains multipart data encryption

我正在尝试从前端 HTML 表单将文件上传到数据库。这是代码:

createuser.html

<form method="POST" enctype="multipart/form-data" action="">
    <input type="file" name="myfile">
    <input type="submit">
</form>

views.py

@login_required(login_url='login')
def createuser(request):

    authority = Authority.objects.only('authority')
    designation = Authority.objects.only('designation')

    if request.method == 'POST':
        if request.POST:
            post = CustomUser()
            post.first_name = request.POST.get('first_name')
            post.middle_name = request.POST.get('middle_name')
            post.last_name = request.POST.get('last_name')
            post.emp_code = request.POST.get('emp_code')
            post.email = request.POST.get('email')
            passwrd = request.POST.get('password')
            post.password = make_password(passwrd)
            post.joining_date = request.POST.get('joining_date')
            # post.authority = request.POST.get('authority')
            # post.designation = Designation.objects.get(designation=request.POST.get('designation'))
                        
            post.language = request.POST.getlist('lang')
            post.address = request.POST.get('address')
            post.education = request.POST.get('education')
            post.blood_group = request.POST.get('blood_group')
            post.emergency_contact = request.POST.get('emergency_contact')
            post.relation = request.POST.get('relation')
            post.created_by = request.user
            
            myfile = request.FILES['myfile']  
            # generates multivalue dict error as multivalueDict is empty
            print(myfile)
           
            # fs = FileSystemStorage()
            # filename = fs.save(myfile.name, myfile)
            # uploaded_file_url = fs.url(filename)               
            # print(uploaded_file_url)
            post.save()
            s = '/usermanage/userdashboard'
            return redirect(s)

    userforminfo = CreateUser.objects.all()
    return render(request, 'usermanage/createuser.html', context={"userforminfo": userforminfo, "authority":authority, "designation":designation})

输出

输出必须是我正在选择的文件。有什么办法可以解决这个问题吗?

我遇到过类似的问题,这里我的问题是我在 Rest API.

中直接传递了没有 FormData 的文件数据
var formData = new FormData();
Array.from(files).forEach(f => formData.append('file', f))

使用上面的代码,我将 FormData 传递给 POST API,我的问题得到解决。