request.POST.get ( 'sth') 대 request.POST [ 'sth']-차이점?


83

차이점은 무엇입니까

request.POST.get('sth')

request.POST['sth']

비슷한 질문을 찾지 못했습니다. 둘 다 저에게 동일하게 작동합니다. 별도로 사용할 수 있다고 가정하지만 내가 틀렸을 수도 있습니다. 그것이 내가 묻는 이유입니다. 어떤 아이디어?

답변:


193

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)

13
+1. .get이 파이썬 사전의 기본 동작임을 언급합니다.
Tommy Strand

1
"이것은 파이썬 사전의 동작이며 request.POST에만 국한되지 않습니다."나는 파이썬으로 첫날이 대답을 읽었 으면 좋겠다 ... +1!
kikusin 2015-08-27

0

일반 사전 액세스와 .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 () 메서드를 사용하는 이점입니다.


2
이 답변에서 아직 높게 찬성 및 수용된 답변에없는 것은 무엇입니까?
Stephen Rauch 2017 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.