Error de Django MultiValueDictKeyError, ¿cómo lo soluciono?

Resuelto dotty asked hace 13 años • 10 respuestas

Estoy intentando guardar un objeto en mi base de datos, pero arroja un MultiValueDictKeyErrorerror.

El problema radica en el formulario, que is_privateestá representado por una casilla de verificación. Si la casilla de verificación NO está seleccionada, obviamente no se pasa nada. Aquí es donde se descarta el error.

¿Cómo trato adecuadamente esta excepción y la detecto?

la linea es

is_private = request.POST['is_private']
dotty avatar May 05 '11 16:05 dotty
Aceptado

Utilice el método de MultiValueDict get. Esto también está presente en los dictados estándar y es una forma de recuperar un valor y al mismo tiempo proporcionar un valor predeterminado si no existe.

is_private = request.POST.get('is_private', False)

Generalmente,

my_var = dict.get(<key>, <default>)
adamnfish avatar May 05 '2011 09:05 adamnfish

Elige lo que es mejor para ti:

1

is_private = request.POST.get('is_private', False);

Si is_privatela clave está presente en request.POST, la is_privatevariable será igual a ella; si no, será igual a False.

2

if 'is_private' in request.POST:
    is_private = request.POST['is_private']
else:
    is_private = False

3

from django.utils.datastructures import MultiValueDictKeyError
try:
    is_private = request.POST['is_private']
except MultiValueDictKeyError:
    is_private = False
Silver Light avatar May 05 '2011 09:05 Silver Light