使用Django和Python创建JSON响应

使用Django和Python创建JSON响应

我正在尝试将服务器端Ajax响应脚本转换为Django HttpResponse,但显然它不起作用。

这是服务器端脚本:

/* RECEIVE VALUE */$validateValue=$_POST['validateValue'];$validateId=$_POST['validateId'];$validateError=$_POST['validateError'];/* RETURN VALUE */$arrayToJs = array();$arrayToJs[0] = $validateId;$arrayToJs[1] = $validateError;if($validateValue =="Testuser"){  // Validate??
    $arrayToJs[2] = "true";       // RETURN TRUE
    echo '{"jsonValidateReturn":'.json_encode($arrayToJs).'}';  // RETURN ARRAY WITH success}else{
    for($x=0;$x<1000000;$x++){
        if($x == 990000){
            $arrayToJs[2] = "false";
            echo '{"jsonValidateReturn":'.json_encode($arrayToJs).'}';   // RETURNS ARRAY WITH ERROR.
        }
    }}

这是转换后的代码

def validate_user(request):
    if request.method == 'POST':
        vld_value = request.POST.get('validateValue')
        vld_id = request.POST.get('validateId')
        vld_error = request.POST.get('validateError')

        array_to_js = [vld_id, vld_error, False]

        if vld_value == "TestUser":
            array_to_js[2] = True
            x = simplejson.dumps(array_to_js)
            return HttpResponse(x)
        else:
            array_to_js[2] = False
            x = simplejson.dumps(array_to_js)
            error = 'Error'
            return render_to_response('index.html',{'error':error},context_instance=RequestContext(request))
    return render_to_response('index.html',context_instance=RequestContext(request))

我使用simplejson对Python列表进行编码(因此它将返回一个JSON数组)。我还不知道这个问题。但我觉得我对“回声”做错了什么。


胡子哥哥
浏览 599回答 3
3回答

慕斯709654

我通常使用字典,而不是列表来返回JSON内容。import&nbsp;jsonfrom&nbsp;django.http&nbsp;import&nbsp;HttpResponseresponse_data&nbsp;=&nbsp;{}response_data['result']&nbsp;=&nbsp;'error'response_data['message']&nbsp;=&nbsp;'Some&nbsp;error&nbsp;message'前Django 1.7您会这样返回它:return&nbsp;HttpResponse(json.dumps(response_data),&nbsp;content_type="application/json")如果Django 1.7+,请使用JsonResponse如图所示这个答案就像这样:from&nbsp;django.http&nbsp;import&nbsp;JsonResponsereturn&nbsp;JsonResponse({'foo':'bar'})

慕勒3428872

Django新设1.7你可以用JsonResponse物品。从医生那里:from&nbsp;django.http&nbsp;import&nbsp;JsonResponsereturn&nbsp;JsonResponse({'foo':'bar'})

ibeautiful

我用这个,效果很好。from&nbsp;django.utils&nbsp;import&nbsp;simplejsonfrom&nbsp;django.http&nbsp;import&nbsp;HttpResponsedef&nbsp;some_view(request): &nbsp;&nbsp;&nbsp;&nbsp;to_json&nbsp;=&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"key1":&nbsp;"value1", &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"key2":&nbsp;"value2" &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;HttpResponse(simplejson.dumps(to_json),&nbsp;mimetype='application/json')备选方案:from&nbsp;django.utils&nbsp;import&nbsp;simplejsonclass&nbsp;JsonResponse(HttpResponse): &nbsp;&nbsp;&nbsp;&nbsp;""" &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JSON&nbsp;response &nbsp;&nbsp;&nbsp;&nbsp;""" &nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;__init__(self,&nbsp;content,&nbsp;mimetype='application/json',&nbsp;status=None,&nbsp;content_type=None): &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;super(JsonResponse,&nbsp;self).__init__( &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;content=simplejson.dumps(content), &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mimetype=mimetype, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;status=status, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;content_type=content_type, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)在Django 1.7JsonResponse对象已经添加到Django框架本身,这使得这项任务更加容易:from&nbsp;django.http&nbsp;import&nbsp;JsonResponsedef&nbsp;some_view(request): &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;JsonResponse({"key":&nbsp;"value"})
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python