request.POST['sth']
generará una KeyError
excepción si 'sth'
no está en request.POST
.
request.POST.get('sth')
Regresará None
si 'sth'
no está en request.POST
.
Además, le .get
permite proporcionar un parámetro adicional de un valor predeterminado que se devuelve si la clave no está en el diccionario. Por ejemplo,request.POST.get('sth', 'mydefaultvalue')
Este es el comportamiento de cualquier diccionario de Python y no es específico de request.POST
.
Estos dos fragmentos son funcionalmente idénticos:
Primer fragmento:
try:
x = request.POST['sth']
except KeyError:
x = None
Segundo fragmento:
x = request.POST.get('sth')
Estos dos fragmentos son funcionalmente idénticos:
Primer fragmento:
try:
x = request.POST['sth']
except KeyError:
x = -1
Segundo fragmento:
x = request.POST.get('sth', -1)
Estos dos fragmentos son funcionalmente idénticos:
Primer fragmento:
if 'sth' in request.POST:
x = request.POST['sth']
else:
x = -1
Segundo fragmento:
x = request.POST.get('sth', -1)
La principal diferencia entre el acceso normal a los diccionarios y el acceso con .get () es que
Con el uso de algo como
request.POST['sth']
, surgirá un error clave si el ket 'sth' no existe. Pero el uso de diccionarios del método get () también le proporcionará un mejor manejo de erroresrequest.POST.get('sth')
devolverá ninguno es la clave 'sth no existe' y también al dar el segundo parámetro para get () volverá con él como valor predeterminado.
data = request.POST.get('sth','my_default_value')
si la clave 'sth' no existe, el valor en los datos será
my_default_value
. Esa es la ventaja de usar el método get () sobre el acceso normal a los diccionarios.fuente