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!