Gibt es eine einfache Möglichkeit zum Überschreiben DjangoJSONEncoder.ensure_ascii
und setzen Sie es auf False
oder Ausgabe non-ASCII-Text in django.http.JsonResponse
auf andere Weise?Erstellen von UTF-8 JsonResponse in Django
Antwort
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=False
HERE
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.
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
Sie sollten es als Teil Ihrer ursprünglichen Frage setzen. – masnun
Es ist eine Lösung, die ich geteilt habe und gleichzeitig versuche, nach einem besseren zu suchen. –
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 ...
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)
- 1. Symfony2 JsonResponse utf8 Codierungsprobleme auf Debian Stable php-5.4
- 2. Wie JsonResponse in php
- 3. Verwenden Sie JSONResponse zum Serialisieren eines QuerySet in Django 1.7?
- 4. Erstellen json Array in django
- 5. Django makemessages Fehler Unbekannte Codierung "utf8"
- 6. Get JsonResponse einer aufgerufenen Funktion
- 7. Drucken von utf8 in glib
- 8. Django JsonResponse returning content-type text/html anstelle von application/json
- 9. Erstellen Sie eine ungültige UTF8-Perl-Zeichenfolge?
- 10. mit UTF8 in sfml
- 11. Ändern von utf8mb4 zu utf8
- 12. django-mutant beim Erstellen von Modellen in django-admin
- 13. Bulk Erstellen von Modellobjekten in Django
- 14. Erstellen von benutzerdefinierten Feld-Lookups in Django
- 15. UTF8-Verarbeitung in C
- 16. Wie UTF8 Dateinamen für HTTP-Header zu kodieren? (Python, Django)
- 17. Wie man CSR mit utf8 Subject in openssl erstellen?
- 18. Konvertierung von UTF8 nach ASCII
- 19. Verwendung von Regex für utf8 in Ruby
- 20. inkonsistente Anzeige von utf8 Akzenten
- 21. Zeichenfolge in UTF8 konvertieren
- 22. ios UTF8-Codierung von NSString
- 23. Anzeigen von utf8 auf Flash?
- 24. Erstellen eines Linkverkürzers in Django
- 25. UnicodeDecodeError: 'utf8' Codec kann Byte
- 26. Erstellen einer Bestellung in Django
- 27. Konvertieren latin1 Zeichenfolge in utf8?
- 28. Alternative von Anfragen in Django
- 29. Django: Erstellen von HTML-Eingabe-Array mit einer django Form
- 30. konvertieren Unicode Ucs4 in UTF8
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. –
Überprüfen Sie meine edited Post. – Yaaaaaaaaaaay
Danke. Kannst du das hinzugefügte Teil an den Anfang verschieben? –