django的MultiValueDictKeyError错误,如何处理?
我正在尝试把一个对象保存到我的数据库,但出现了一个 MultiValueDictKeyError
错误。
问题出在表单上,is_private
是通过一个复选框来表示的。如果复选框没有被选中,显然就什么都不会传递。这就是错误出现的地方。
我该如何正确处理这个异常,并捕捉到它呢?
出错的代码行是
is_private = request.POST['is_private']
10 个回答
15
你遇到这个问题是因为你在从一个字典里获取一个不存在的键。你需要先检查一下这个键是否在字典里。
可以试试:
is_private = 'is_private' in request.POST
或者
is_private = 'is_private' in request.POST and request.POST['is_private']
这要根据你使用的值来决定。
108
选择最适合你的选项:
1
is_private = request.POST.get('is_private', False);
如果请求中有一个叫 is_private
的键,那么 is_private
这个变量就会等于它的值。如果没有这个键,那么 is_private
就会被设为 False,也就是“假”。
2
if 'is_private' in request.POST:
is_private = request.POST['is_private']
else:
is_private = False
3
from django.utils.datastructures import MultiValueDictKeyError
try:
is_private = request.POST['is_private']
except MultiValueDictKeyError:
is_private = False
377
使用MultiValueDict的get
方法。这种方法在普通的字典中也有,可以用来获取一个值,如果这个值不存在,还可以提供一个默认值。
is_private = request.POST.get('is_private', False)
一般来说,
my_var = dict.get(<key>, <default>)