2012-05-21 8 views
11

Folgendes scheint einen String anstelle eines booleschen Werts zu übergeben. Wie würde ich einen Boolean übergeben?Wie übergibt man einen boolean von Javascript zu Python?

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

Antwort

28

In Ihrem Python-Code tun:

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

Oder noch einfacher:

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

Beachten Sie, dass die get() Funktion immer einen String zurück, so dass Sie es nach dem konvertieren müssen tatsächlicher Typ, den Sie brauchen.

+3

Ich würde zum leichteren Lesen folgendes vorschlagen: 'active = request.POST.get ('active', False) == 'true'' – JazzyWhit

6

Unter der Annahme, dass Sie boolean Wert auf den Server als true/false oder 1/0, auf der Server-Seite senden könnten Sie beiden Fälle mit in überprüfen:

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

Andernfalls Wenn Sie sicher sind, dass Ihr boolescher Wert nur true/false ist, verwenden Sie:

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

Ein Argument könnte gemacht werden, dass Sie entweder "wahr" oder "1" wählen und nur diesen einen Wert akzeptieren sollten, aber dies ist eine gute Lösung, wenn Sie beides wollen. –

+0

@ BrendanLong Ja, das sind auch meine Gedanken. – VisioN

Verwandte Themen