2017-01-24 6 views
1

Im json Antwort in django, aber ich habe Sonderzeichen (NAE etc ...)Sonderzeichen (utf-8) in einem django jsonresponse

meine Ansicht

def get_agencies(request): 
     qr = Agency.objects.all() 
     qr_jason = serializers.serialize('json',qr) 
     return JsonResponse(qr_jason, safe=False) 

Aber wenn ich eingeben ein Sonderzeichen wie - im JSON bekomme ich das ASCII-Äquivalent. Eigentlich kann ich ein Wörterbuch machen und dann die JasonResponse mit dem Wörterbuch machen und es funktioniert, ich kann keinen Weg finden, die serializers.serialize mit utf-8 zu benutzen.

json erhielt (die u00f1 sind ñ)

// 20170124165944 
// http://localhost:8080/get_agencies/ 

"[ 
    { 
    \"model\": \"items.agency\", 
    \"pk\": 1, 
    \"fields\": { 
     \"name\": \"asdk\\u00f1ld\", 
     \"tipo\": \"librevile\", 
     \"adress\": \"laslkfdli323, 
     ls\\u00f1\\u00f1\", 
     \"phone\": \"56549875\", 
     \"web\": \"http: //www.systmatic.com.mx\", 
     \"lat\": 23.514646, 
     \"lng\": -26.152684, 
     \"created\": \"2017-01-24T00: 56: 28.302Z\", 
     \"last_updated\": \"2017-01-24T22: 22: 08.856Z\" 
    } 
    } 
]" 

Antwort

2

Ich weiß, dass Sie schrieb, dass Sie django.core.serializers.serialize mit serialisiert werden möchten, aber ... Sie eine Abhilfe tun könnte und serialisiert json Standard lib verwenden.

import json 

def get_agencies(request): 
    qr = Agency.objects.all().values() 
    qr_json = json.dumps(list(qr), ensure_ascii=False, default=str) 
    return JsonResponse(qr_json, safe=False) 

Ich habe default=str Parameter json.dumps hinzugefügt, weil ich sah, dass Sie ein Datetime-Feld in Ihrem Modell haben, so dass die Pflege dieses Problem zu nehmen.

+0

Ja, das funktioniert, auch mit Wörterbüchern funktioniert, mit dem Objekt .__ dict__ Methode (jetzt bin ich eigentlich mit dieser Lösung). Ich habe mich nur gefragt, ob es eine Möglichkeit gibt, die serializers.serialize mit Sonderzeichen zu verwenden. –

Verwandte Themen