request.POST['hoge']とrequest.POST.get('hoge')の違いは何か?
今まで何も考えずにrequest.POST['hoge']を使っていましたが(ゴメンナサイ)、どのように使い分ければいいのだろうかと疑問に思ったので調べてみました。
#フォームに入力された値は辞書で返される
フォームに入力された値は辞書で返されます。
request.POST['hoge']
は、辞書['key']
で辞書の値を取り出しているのと同じ。
request.POST.get('hoge')
は、辞書.get('key')
で辞書の値を取り出しているのと同じです。
#辞書['key']と辞書.get('key')の違い
辞書['key']
では、存在しないキーを指定したときにKeyError
が発生します。
辞書.get('key')
では、存在しないキーを指定したときはNone
が返されます。
辞書.get('key', 'default')
のように第二引数を設定すると、キーが存在しなかったときに、設定した値をデフォルト値として返してくれます。このため、キーが存在しなくてもエラーが発生しません。
#どう使い分けるか
エラーを発生させたいときはrequest.POST['hoge']
、エラーを発生させたくない時はrequest.POST.get('hoge')
を使えばいい、ということですね。
これからはちゃんと区別して使います…(' ▽ ')ゞ