[django] request.POST.get ( ‘sth’) 대 request.POST [ ‘sth’]-차이점?

차이점은 무엇입니까

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 () 메서드를 사용하는 이점입니다.


답변