即使没有上传图片,也要提交表单。但我得到了错误
**MultiValueDictKeyError**
这是我的views.py
filepath = request.FILES['filepath']
答案 0 :(得分:6)
了解如何拨打该错误:
使用MultiValueDict's
get方法访问文件。
filepath = request.FILES.get('filepath', False)
如果FILES中没有filepath
,则filepath
变量将为False。
使用ternary运算符分配一行:
filepath = request.FILES['filepath'] if 'filepath' in request.FILES else False
( Not reccomended )处理MultiValueDictKeyError
异常,如下面的代码:
from django.utils.datastructures import MultiValueDictKeyError
try:
filepath = request.FILES['filepath']
except MultiValueDictKeyError:
filepath = False
<强>更新强>:
正如@Saysa所指出的那样,在获得filepath
之后您应该执行哪些步骤,您需要选择将哪个默认值分配给filepath
,例如,如果您必须处理案例当filepath
完全不在FILES
时,最好使用None
作为默认值,并检查条件为if filepath is None
以确定已提交的文件路径,如果您需要有一些默认值,只需分配它......
在上面的示例中,默认值为False
,以使代码更明显...
答案 1 :(得分:1)
request.FILES.get('filepath')
如何,如果没有图像,那么filepath
应为None
答案 2 :(得分:1)
仅作为发布的附加内容。如果要检查给定的文件路径,则必须将类型更改为布尔值,如下所示:
if bool(request.FILES.get('filepath', False)) == True: