Maison >développement back-end >Tutoriel Python >Comment construire correctement des réponses JSON dans Django ?

Comment construire correctement des réponses JSON dans Django ?

DDD
DDDoriginal
2024-11-25 21:11:12909parcourir

How to Correctly Construct JSON Responses in Django?

Création de réponses JSON avec Django et Python

Dans Django, la conversion des réponses Ajax côté serveur en Django HttpResponse peut être simple si elle est effectuée correctement. Explorons une tentative précédente et ses pièges.

Le code converti

Le code original en question tentait de convertir un script côté serveur en Django HttpResponse :

def validate_user(request):
    if request.method == 'POST':
        ...
        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:
            ...
            return render_to_response('index.html', ...)

Le problème

Le problème réside en utilisant une liste (array_to_js) pour construire la réponse JSON. Django attend un dictionnaire lors de la création de réponses JSON.

La solution

Pour résoudre ce problème, utilisez un dictionnaire pour stocker les données de réponse :

response_data = {}
response_data['vld_id'] = vld_id
response_data['vld_error'] = vld_error
response_data['valid'] = False

if vld_value == "TestUser":
    response_data['valid'] = True

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

Astuce supplémentaire

Pour Django 1.7, vous pouvez utiliser le Classe JsonResponse pour créer facilement des réponses JSON :

from django.http import JsonResponse

return JsonResponse({
    'vld_id': vld_id,
    'vld_error': vld_error,
    'valid': False
})

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