違いは何ですか
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。
最初のスニペット:
try:
x = request.POST['sth']
except KeyError:
x = None
2番目のスニペット:
x = request.POST.get('sth')
最初のスニペット:
try:
x = request.POST['sth']
except KeyError:
x = -1
2番目のスニペット:
x = request.POST.get('sth', -1)
最初のスニペット:
if 'sth' in request.POST:
x = request.POST['sth']
else:
x = -1
2番目のスニペット:
x = request.POST.get('sth', -1)
通常の辞書アクセスと.get()を使用したアクセスの主な違いは、
のようなものを使用
request.POST['sth']すると、重要なエラーが発生します。これは、ケットの「sth」が存在しない場合です。ただし、get()メソッドディクショナリを使用すると、エラー処理も向上します。
request.POST.get('sth')
キー「sthは存在しません」である場合はnoneを返します。また、get()に2番目のパラメーターを指定すると、デフォルト値として返されます。
data = request.POST.get('sth','my_default_value')
'sth'キーが存在しない場合、データの値はになりますmy_default_value。これは、通常の辞書アクセスよりもget()メソッドを使用する利点です。