📅  最后修改于: 2023-12-03 15:00:27.430000             🧑  作者: Mango
在使用 Django 表单时,尝试上传图片文件并保存到数据库,但是无法成功保存。在控制台上看到了以下错误信息:
'NoneType' object has no attribute 'name'
该错误通常是由于表单未正确处理上传的文件数据导致的。在 Django 中,表单提交的文件数据需要通过 request.FILES
获取,而不能通过 request.POST
获取。此外,还需要在表单中添加 enctype="multipart/form-data"
属性以指示该表单包含文件数据。
enctype="multipart/form-data"
属性。<form method="post" action="{% url 'upload' %}" enctype="multipart/form-data">
{% csrf_token %}
<input type="file" name="file" required>
<button type="submit">Upload</button>
</form>
request.FILES
获取上传的文件对象,并将其保存至数据库。def upload_view(request):
if request.method == 'POST':
form = UploadForm(request.POST, request.FILES)
if form.is_valid():
upload = form.save(commit=False)
upload.file_field = request.FILES['file']
upload.save()
return redirect('uploads_list')
else:
form = UploadForm()
return render(request, 'upload.html', {'form': form})
其中,request.FILES
获取上传的文件对象,并将其保存至 file_field
字段。
在使用 Django 表单处理文件上传时,需要按照上述步骤正确处理表单数据,避免出现保存失败的情况。同时,还需要注意在数据库中设置 FileField
类型的字段时,需要指定相应的上传目录和文件命名规则。