0

Djangoは初めてですが、誰かが違いを説明できますか

username=form.cleaned_data['username']

vs

username=form.cleaned_data.get('username')
4

3 に答える 3

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
于 2012-12-18T17:16:35.267 に答える
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
于 2012-12-18T17:16:52.360 に答える
2

ドキュメントから:

getキー[、デフォルト])

キーがディクショナリにある場合はキーの値を返し、そうでない場合はデフォルトを返します。defaultが指定されていない場合、デフォルトで。になるため、このメソッドで。が発生することはありません。NoneKeyError

于 2012-12-18T17:15:38.787 に答える