Django的新手,有人可以解释
之间的区别username=form.cleaned_data['username']
VS
username=form.cleaned_data.get('username')
答案 0 :(得分:4)
form.cleaned_data
是一本字典。如果您尝试直接通过这样的字典访问密钥,如果找不到密钥,则会引发错误。
>>> ex_dict = {}
>>> ex_dict = {'x':1, 'y':2}
>>> ex_dict['z']
Traceback (most recent call last):
File "<console>", line 1, in <module>
KeyError: 'z'
然而,如果您对字典使用get
,它将返回None
而不是错误,或者如果找不到密钥,您可以指定预期的返回值。
>>> ex_dict.get('z')
>>> ex_dict.get('z', 1)
1
答案 1 :(得分:3)
如果找不到KeyError
密钥,则会引发username
form.cleaned_data['username']
但如果找不到密钥,则会返回None
(默认情况下),不会引发KeyError
异常。
form.cleaned_data.get('username')
如果找不到密钥,您可以选择更改默认返回值(如果使用.get
)。
val = form.cleaned_data.get('username', False)
# assume key was not found
print val # should contains False now
答案 2 :(得分:2)
来自the docs:
get
(密钥 [,默认])如果 key 在字典中,则返回键的值,否则默认。如果未给出默认,则默认为
None
,因此此方法永远不会引发KeyError
。