Comment construire correctement des réponses JSON dans Django ?

DDD
Libérer: 2024-11-25 21:11:12
original
829 Les gens l'ont consulté

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', ...)
Copier après la connexion

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")
Copier après la connexion

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
})
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal