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_private
variables将等于它,如果不是,那么它将等于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_private
为default=False
?
class Foo(models.Models): is_private = models.BooleanField(default=False)
is_private = request.POST.get('is_private','默认值')