首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >django MultiValueDictKeyError错误,我如何处理它?

django MultiValueDictKeyError错误,我如何处理它?
EN

Stack Overflow用户
提问于 2011-05-05 17:40:15
回答 7查看 319.7K关注 0票数 219

我正试图将一个对象保存到我的数据库中,但它抛出了一个MultiValueDictKeyError错误。

问题出在表单中,is_private由一个复选框表示。如果未选中该复选框,则显然不会传递任何内容。这就是错误被抛出的地方。

我如何正确地处理这个异常,并捕获它?

这条线是

代码语言:javascript
复制
is_private = request.POST['is_private']
EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2011-05-05 17:47:34

使用MultiValueDict的get方法。这也存在于标准字典中,是一种在不存在默认值的情况下获取值的方法。

代码语言:javascript
复制
is_private = request.POST.get('is_private', False)

一般来说,

代码语言:javascript
复制
my_var = dict.get(<key>, <default>)
票数 340
EN

Stack Overflow用户

发布于 2011-05-05 17:45:49

选择最适合你的:

1

代码语言:javascript
复制
is_private = request.POST.get('is_private', False);

如果request.POST中存在is_private密钥,则is_private变量将等于它,如果不存在,则等于False。

2

代码语言:javascript
复制
if 'is_private' in request.POST:
    is_private = request.POST['is_private']
else:
    is_private = False

3.

代码语言:javascript
复制
from django.utils.datastructures import MultiValueDictKeyError
try:
    is_private = request.POST['is_private']
except MultiValueDictKeyError:
    is_private = False
票数 96
EN

Stack Overflow用户

发布于 2011-05-05 17:42:34

你得到它是因为你试图从字典中获取一个键,而它并不在字典中。您需要首先测试它是否在其中。

尝试:

代码语言:javascript
复制
is_private = 'is_private' in request.POST

代码语言:javascript
复制
is_private = 'is_private' in request.POST and request.POST['is_private']

这取决于您正在使用的值。

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5895588

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档