588 Stimmen

Erstellen einer JSON-Antwort mit Django und Python

Ich versuche, eine Server-Seite Ajax-Antwort-Skript in eine Django HttpResponse zu konvertieren, aber offenbar ist es nicht funktioniert.

Dies ist das serverseitige Skript:

/* 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.
        }
    }
}

Und so sieht der umgewandelte Code aus

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))

Ich verwende simplejson, um die Python-Liste zu kodieren (so dass es ein JSON-Array zurückgibt). Ich konnte das Problem noch nicht herausfinden. Aber ich denke, dass ich etwas falsch mit dem 'echo' gemacht habe.

0 Stimmen

Sie können auch den lästigen django-View-Dekorator verwenden @ajax_request .

1voto

Deepak Sharma Punkte 1133

In View verwenden Sie dies:

form.field.errors|striptags

um Validierungsmeldungen ohne html zu erhalten

0voto

NINSIIMA WILBER Punkte 131
def your_view(request):
    response = {'key': "value"}
    return JsonResponse(json.dumps(response), content_type="application/json",safe=False)

Spezifizieren Sie den content_type und verwenden Sie json.dump() son, da der Inhalt nicht als Objekt gesendet werden soll.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X