2016-01-14 8 views

Antwort

4

EDIT:

Oder wenn Sie auf das utf-8-Format neigen, anstelle von Djangos JsonResponse():

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

oder

return JsonResponse(json.dumps(response_data, ensure_ascii=False), safe=False) 

mehr über die safe=FalseHERE


OLD:

Sie haben nicht auf das, was zu ändern.

Obwohl Django JSON-Daten in ASCII (aus UTF-8) erstellt, dekodiert Javascript diese automatisch in UTF-8.

+0

Danke für den Vorschlag, aber ich bevorzuge Lesbarkeit über etwas bessere Rückwärtskompatibilität, die ich in meinem Fall gar nicht brauche. Außerdem wird UTF-8 in RFC 7159 empfohlen. –

+0

Überprüfen Sie meine edited Post. – Yaaaaaaaaaaay

+0

Danke. Kannst du das hinzugefügte Teil an den Anfang verschieben? –

0

ich einen besseren Weg noch nicht finden, als ein bereits installierte REST-Framework zu nutzen:

from rest_framework.decorators import api_view, permission_classes 
from rest_framework.permissions import IsAuthenticatedOrReadOnly 
from rest_framework.response import Response 

from .models import INITIATOR_TYPES 

@api_view(['GET']) 
@permission_classes((IsAuthenticatedOrReadOnly,)) 
def initiator_types(request): 
    data = {t[0]: str(t[1]) for t in INITIATOR_TYPES} 
    return Response(data) 

Aber ich weiß nicht wirklich wie es. Es ist viel komplizierter als JsonResponse: https://stackoverflow.com/a/24411716/854477

+0

Sie sollten es als Teil Ihrer ursprünglichen Frage setzen. – masnun

+0

Es ist eine Lösung, die ich geteilt habe und gleichzeitig versuche, nach einem besseren zu suchen. –

1

Um JsonResponse für und rückwärts kompatibel zu halten, haben wir es in django-compat hinzugefügt/rückportiert/implementiert. Vielleicht hilft das jemand jetzt oder in der Zukunft ...

0
from django.core.serializers.json import DjangoJSONEncoder 
from django.http import JsonResponse 


class MyJsonResponse(JsonResponse): 
    def __init__(self, data, encoder=DjangoJSONEncoder, safe=True, **kwargs): 
     json_dumps_params = dict(ensure_ascii=False) 
     super().__init__(data, encoder, safe, json_dumps_params, **kwargs)