Maison >développement back-end >Tutoriel Python >Comment créer efficacement des réponses JSON dans Django à l'aide de Python ?

Comment créer efficacement des réponses JSON dans Django à l'aide de Python ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-19 16:11:03951parcourir

How to Efficiently Create JSON Responses in Django Using Python?

Création d'une réponse JSON à l'aide de Django et Python : résolution des problèmes de conversion

Dans le but de traduire un script de réponse Ajax côté serveur en Django HttpResponse, vous avez rencontré un problème. Le script côté serveur d'origine :

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

Le code Django converti :

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

Le problème réside dans votre choix de structure de données pour renvoyer le contenu JSON. Au lieu d’utiliser une liste, il est recommandé d’utiliser un dictionnaire. Voici une version améliorée utilisant un dictionnaire :

import json

from django.http import HttpResponse

response_data = {}
response_data['result'] = 'error'
response_data['message'] = 'Some error message'

if vld_value == "TestUser":
    response_data['result'] = 'success'
    response_data['message'] = 'Validation successful'

return HttpResponse(json.dumps(response_data), content_type='application/json')

N'oubliez pas que lorsque vous utilisez Django 1.7 ou version ultérieure, vous pouvez utiliser la classe JsonResponse pour une réponse simplifiée :

from django.http import JsonResponse

response_data = {
    'result': 'error' if vld_value != 'TestUser' else 'success',
    'message': 'Error message' if vld_value != 'TestUser' else 'Validation successful'
}

return JsonResponse(response_data)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn