차이점은 무엇입니까
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')
이것은 모든 파이썬 사전의 동작이며 request.POST
.
이 두 조각은 기능적으로 동일합니다.
첫 번째 스 니펫 :
try:
x = request.POST['sth']
except KeyError:
x = None
두 번째 스 니펫 :
x = request.POST.get('sth')
이 두 조각은 기능적으로 동일합니다.
첫 번째 스 니펫 :
try:
x = request.POST['sth']
except KeyError:
x = -1
두 번째 스 니펫 :
x = request.POST.get('sth', -1)
이 두 조각은 기능적으로 동일합니다.
첫 번째 스 니펫 :
if 'sth' in request.POST:
x = request.POST['sth']
else:
x = -1
두 번째 스 니펫 :
x = request.POST.get('sth', -1)
답변
일반 사전 액세스와 .get ()으로 액세스하는 것의 주요 차이점은
같은 것을 사용
request.POST['sth']
하면 ket ‘sth’가 존재하지 않는 경우 주요 오류가 발생합니다. 그러나 get () 메서드 사전을 사용하면 더 나은 오류 처리를 제공 할 수 있습니다.
request.POST.get('sth')
‘sth does not exist’키를 반환하지 않으며 get ()에 두 번째 매개 변수를 제공하면 기본값으로 반환됩니다.
data = request.POST.get('sth','my_default_value')
‘sth’키가 존재하지 않으면 데이터의 값은입니다 my_default_value
. 이것이 일반적인 사전 액세스에 비해 get () 메서드를 사용하는 이점입니다.