Django的MultiValueDictKeyError错误,我如何处理它

干草,我试图保存一个对象到我的数据库,但它抛出一个MultiValueDictKeyError错误。

问题在于表单内,is_private由checkbox表示。 如果没有选中checkbox,则不会传递任何信息。 这是错误被卡住的地方。

我如何妥善处理这个exception,并抓住它?

这条线是

is_private = request.POST['is_private'] 

谢谢

使用MultiValueDict的get方法。 这也存在于标准的词典中,并且是一种在提供缺省值(如果不存在)的情况下获取值的方法。

 is_private = request.POST.get('is_private', False) 

通常,

 my_var = dict.get(<key>, <default>) 

select最适合你的东西:

1

 is_private = request.POST.get('is_private', False); 

如果is_private中存在is_private密钥, is_privatevariables将等于它,如果不是,那么它将等于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 

你得到这个,是因为你试图从字典中获得一个密钥,当它不在那里的时候。 你需要先testing它是否在那里。

尝试:

 is_private = 'is_private' in request.POST 

要么

 is_private = 'is_private' in request.POST and request.POST['is_private'] 

取决于你使用的值。

你为什么不尝试在你的模型中定义is_privatedefault=False

 class Foo(models.Models): is_private = models.BooleanField(default=False) 
  is_private = request.POST.get('is_private','默认值')