Djangoは初めてですが、誰かが違いを説明できますか
username=form.cleaned_data['username']
vs
username=form.cleaned_data.get('username')
Djangoは初めてですが、誰かが違いを説明できますか
username=form.cleaned_data['username']
vs
username=form.cleaned_data.get('username')
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
これにより、キーが見つからない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
ドキュメントから:
get
(キー[、デフォルト])キーがディクショナリにある場合はキーの値を返し、そうでない場合はデフォルトを返します。defaultが指定されていない場合、デフォルトで。になるため、このメソッドで。が発生することはありません。
None
KeyError