1. ホーム
  2. django

[解決済み] request.POST.get('sth') vs request.POST['sth'] - 違いは?

2023-03-10 23:28:12

質問

とはどのような違いがあるのでしょうか?

request.POST.get('sth')

request.POST['sth']

同様の質問を見つけられず、両方とも私のために同じように動作し、私はそれらを別々に使用することができると仮定しますが、多分私は間違っている、それが私が質問している理由です。任意のアイデア?

解決する方法か。

request.POST['sth'] が発生します。 KeyError 例外 'sth' の中にない場合は request.POST .

request.POST.get('sth') が返されます。 None もし 'sth' にない場合は request.POST .

さらに .get では、キーが辞書にない場合に返されるデフォルト値のパラメータを追加で指定することができます。 例えば request.POST.get('sth', 'mydefaultvalue')

これはどのPython辞書でも見られる動作で、特に request.POST .




この2つのスニペットは機能的に同じです。

最初のスニペットです。

try:
    x = request.POST['sth']
except KeyError:
    x = None



2つ目のスニペットです。

x = request.POST.get('sth')




この2つのスニペットは機能的に同じです。

最初のスニペットです。

try:
    x = request.POST['sth']
except KeyError:
    x = -1



2つ目のスニペットです。

x = request.POST.get('sth', -1)




この2つのスニペットは機能的に同じです。

最初のスニペットです。

if 'sth' in request.POST:
    x = request.POST['sth']
else:
    x = -1



2つ目のスニペットです。

x = request.POST.get('sth', -1)