Heim  >  Artikel  >  Backend-Entwicklung  >  Wie erstellt man JSON-Antworten in Django richtig?

Wie erstellt man JSON-Antworten in Django richtig?

DDD
DDDOriginal
2024-11-25 21:11:12831Durchsuche

How to Correctly Construct JSON Responses in Django?

Erstellen von JSON-Antworten mit Django und Python

In Django kann die Konvertierung serverseitiger Ajax-Antworten in Django HttpResponse bei korrekter Ausführung unkompliziert sein. Lassen Sie uns einen früheren Versuch und seine Fallstricke untersuchen.

Der konvertierte Code

Der fragliche Originalcode versuchte, ein serverseitiges Skript in eine Django-HTTP-Antwort zu konvertieren:

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', ...)

Das Problem

Das Problem liegt bei der Verwendung einer Liste (array_to_js) zum Erstellen der JSON-Antwort. Django erwartet beim Erstellen von JSON-Antworten ein Wörterbuch.

Die Lösung

Um dieses Problem zu beheben, verwenden Sie ein Wörterbuch zum Speichern der Antwortdaten:

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

Zusätzlicher Tipp

Für Django 1.7 können Sie das verwenden JsonResponse-Klasse zum einfachen Erstellen von JSON-Antworten:

from django.http import JsonResponse

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

Das obige ist der detaillierte Inhalt vonWie erstellt man JSON-Antworten in Django richtig?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn