92

違いは何ですか

request.POST.get('sth')

request.POST['sth']

同様の質問が見つかりませんでした。どちらも同じように機能します。別々に使用できると思いますが、間違っている可能性があるため、質問しています。何か案は?

4

3 に答える 3

215

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)
于 2012-09-20T18:20:03.540 に答える