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

Django表单文件上传返回None问题求助

Django文件上传返回None问题排查与解决

1. 核对表单字段名与后端获取名是否一致

你在forms.py中定义的文件字段名如果是currículum(而非file),那用request.FILES.get('file')必然拿不到数据。比如表单定义如下:

# forms.py
from django import forms

class FormularioTrabajo(forms.Form):
    email = forms.EmailField()
    currículum = forms.FileField(label='Currículum')

后端必须对应字段名取值:request.FILES.get('currículum'),而非file。

2. 确保视图正确处理表单提交

如果使用Django表单类处理提交,必须同时传入request.POST和request.FILES给表单实例,不能单独从request.FILES取值:

# views.py
from django.shortcuts import render
from .forms import FormularioTrabajo
import os
from django.conf import settings

def upload_trabajo(request):
    if request.method == 'POST':
        form = FormularioTrabajo(request.POST, request.FILES)
        if form.is_valid():
            curriculum = form.cleaned_data['currículum']
            # 保存文件到/media目录
            save_path = os.path.join(settings.MEDIA_ROOT, curriculum.name)
            with open(save_path, 'wb+') as f:
                for chunk in curriculum.chunks():
                    f.write(chunk)
            # 后续业务逻辑
    else:
        form = FormularioTrabajo()
    return render(request, 'upload_form.html', {'form': form})

3. 验证模板表单的字段渲染

即使手动设置了enctype="multipart/form-data",也要确认表单字段的name属性和后端一致:

  • 用表单类渲染时,确保字段名匹配:
<form method="post" enctype="multipart/form-data">
    {% csrf_token %}
    {{ form.email }}
    {{ form.currículum }}
    <button type="submit">提交</button>
</form>
  • 手动写input时,name必须对应后端字段名:
<input type="file" name="currículum" id="id_currículum">

4. 检查媒体路径配置

确保settings.py中正确配置媒体目录:

# settings.py
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'

开发环境下,需在项目urls.py中添加媒体路由:

from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    # 其他路由
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

5. 确认请求方法为POST

request.FILES仅在POST请求且enctype="multipart/form-data"时才会携带数据,确保表单的method属性是post。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 09:55:25