
Django 视图无法获取上传的 CSV 文件,通常是因为 HTML 表单缺少 enctype="multipart/form-data" 属性——该属性是文件上传的必要条件,否则浏览器不会将文件数据包含在请求体中。
django 视图无法获取上传的 csv 文件,通常是因为 html 表单缺少 `enctype="multipart/form-data"` 属性——该属性是文件上传的必要条件,否则浏览器不会将文件数据包含在请求体中。
在 Django 中处理文件上传时,表单必须显式声明 enctype="multipart/form-data",且该属性必须设置在
⚠️ 注意事项:
从 CSV 数据集生成图数据库加载器和三元组映射。将表格 CSV 数据转换为图数据库可直接使用的节点、边和三元组。
- enctype="multipart/form-data" 是文件上传的强制要求;缺失会导致 request.FILES 为空字典,访问 request.FILES['csvFile'] 必然抛出 MultiValueDictKeyError。
- 即使已使用 @csrf_exempt,仍建议保留 {% csrf_token %}(或手动添加 ),以避免潜在的安全配置冲突。
- 后端需验证文件是否存在、是否为 CSV 类型,并妥善处理异常:
# views.py
def index(request):
context = {}
if request.method == 'POST':
# ✅ 安全检查:确保文件存在
if 'csvFile' not in request.FILES:
context['error'] = 'No file uploaded. Please select a CSV file.'
return render(request, "zip_app/index.html", context)
csv_file = request.FILES['csvFile']
# ✅ 可选:验证文件扩展名
if not csv_file.name.endswith('.csv'):
context['error'] = 'Only CSV files are allowed.'
return render(request, "zip_app/index.html", context)
# ✅ 处理文件(例如读取为 pandas DataFrame)
try:
df = pd.read_csv(csv_file)
radius_results = pull_radius_zips(df) # 假设此函数接受 DataFrame
context['results'] = radius_results
except Exception as e:
context['error'] = f'Error processing file: {str(e)}'
return render(request, "zip_app/index.html", context)
? 总结:文件上传失败的首要排查点永远是表单 enctype ——务必确认其位于










