You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django中FileField无法将文件传递至表单请求的问题

Django 文件上传表单验证失败的解决方法

核心问题及修复步骤

1. 表单缺少文件上传必需的编码类型

HTML表单上传文件时,必须指定enctype="multipart/form-data"属性,否则浏览器不会将文件数据发送到后端。修改模板中的form标签:

<form action="" method="post" id="search_face_form" style="width: 100%;" enctype="multipart/form-data">

2. 视图中请求判断逻辑错误

request.POST不会包含文件字段,应该通过请求方法判断是否为POST请求,而非检查'photo' in request.POST。修改视图函数:

def upload(request):
    context = {}
    
    if request.method == 'POST':
        form = Form(request.POST, request.FILES)
        if form.is_valid():
            handle_uploaded_file(request.FILES["photo"])
        else:
            print(form.errors)
    else:
        form = Form()
    
    context['form'] = form
    
    return render(request, 'app/upload.html', context)

3. 模板与表单字段/变量不匹配

模板中使用{{ search_form.face }},但视图传递的表单变量是form,且表单类字段名为photo,三者不匹配。需统一命名:

  • 要么修改视图变量:context['search_form'] = form
  • 要么修改模板变量为{{ form.photo }}
  • 若模板坚持用face,则表单类字段需改为face = forms.FileField(...)

验证修复效果

修改完成后重新提交表单,浏览器会正确携带文件数据,form.is_valid()可通过验证,文件将被正常保存。

内容的提问来源于stack exchange,提问作者Miguel Hernandez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 01:53:25