如何将一个布尔值从javascript传递给python?

时间:2012-05-21 22:46:06

标签: javascript python

以下似乎传递了一个字符串而不是一个布尔值。我如何传递布尔值?

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

3 个答案:

答案 0 :(得分:39)

在Python代码中执行以下操作:

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

甚至更简单:

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

请注意get()函数将始终返回一个字符串,因此您需要根据所需的实际类型进行转换。

答案 1 :(得分:7)

假设您可以将{bo}值作为true/false1/0发送给服务器,则可以在服务器端使用in检查这两种情况:

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

否则,如果您确定您的布尔值仅为true/false使用:

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

答案 2 :(得分:1)

奥斯卡的回答是1-liner,我不想从中获取任何东西,但是比较字符串并不是最干净的方法。

我喜欢使用simplejson库。

具体来说,loads将JavaScript的自然json形式解析为本机Python类型。因此,这种技术可用于更广泛的案例。这将为您提供统一代码技术,这些技术更容易阅读,理解&保持即可。

来自文档:

  

将s(包含JSON文档的str或unicode实例)反序列化为Python对象。

import simplejson as sjson
sjson.loads(var_to_parse)

或者您可能通过参数传递接收它:

var_to_parse = request.POST.get('name_of_url_variable') #get url param
    if var_to_parse!= None : #check if param was passed, not required
        parsed_var = sjson.loads(var_to_parse) # loads does the work

注意:如果您不需要使用它们,请使用常识导入库。