2016-01-14 15 views

risposta

4

EDIT:

O se si tende al formato UTF-8, usare al posto di di Django JsonResponse():

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

o

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

altro su safe=FalseHERE


VECCHIO:

Non è necessario a qualunque alter.

Sebbene Django crei dati JSON in ASCII (da UTF-8), Javascript lo decodificherà automaticamente su UTF-8.

+0

Grazie per il suggerimento, ma preferisco la leggibilità rispetto alla retrocompatibilità leggermente migliore di cui non ho bisogno nel mio caso. Inoltre, UTF-8 è raccomandato in RFC 7159. –

+0

Controlla il mio post editato. – Yaaaaaaaaaaay

+0

Grazie. Puoi spostare la parte aggiunta all'inizio? –

0

non ho trovato alcun modo meglio ancora che per utilizzare un quadro di REST già installato:

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) 

ma non mi piace molto. E 'molto più complicato di JsonResponse: https://stackoverflow.com/a/24411716/854477

+0

Dovresti metterlo come parte della tua domanda originale. – masnun

+0

È una soluzione che ho deciso di condividere e provare contemporaneamente a cercarne una migliore. –

1

Per mantenere JsonResponse compatibile con e retrocompatibile, l'abbiamo aggiunto/sostituito/implementato in django-compat. Forse questo aiuta qualcuno ora o in futuro ...

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)