2012-05-21 14 views
11

Lo siguiente parece pasar una cadena en lugar de un valor booleano. ¿Cómo pasaría un booleano?¿Cómo pasar un booleano de javascript a python?

$.post('/ajax/warning_message/', {'active': false}, function() { 
      return 
     }); 
def warning_message(request): 
    active = request.POST.get('active') 
    print active 
    return HttpResponse() 

Respuesta

28

En su código Python hacen esto:

active = True if request.POST.get('active') == 'true' else False 

O aún más simple:

active = request.POST.get('active') == 'true' 

Tenga en cuenta que la función get() siempre devolverá una cadena, por lo que necesita para convertirlo de acuerdo con el tipo real que necesitas

+3

Sugeriría lo siguiente para facilitar la lectura 'active = request.POST.get ('active', False) == 'true'' – JazzyWhit

6

Suponiendo que usted podría enviar valor booleano al servidor como true/false o 1/0, en el lado del servidor puede comprobar ambos casos con in:

def warning_message(request): 
    active = request.POST.get('active') in ['true', '1'] 
    print active 
    return HttpResponse() 

De lo contrario, si está seguro de que su booleano será solo true/false use:

def warning_message(request): 
    active = request.POST.get('active') == 'true' 
    print active 
    return HttpResponse() 
+0

Se podría argumentar que solo debe elegir "verdadero" o "1" y solo aceptar ese valor, pero esta es una buena solución si quiere ambos. –

+0

@BrendanLong Sí, esos son mis pensamientos también. – VisioN

Cuestiones relacionadas