/ / django jsonresponseの特殊文字(utf-8)-json、django、utf-8、python-3.5

django jsonresponse - json、django、utf-8、python-3.5の特殊文字(utf-8)

djangoでjson応答を使用していますが、特殊文字(ñáéなど)があります

私の見解

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

しかし、もしñのような特殊文字をjson私はアスキーの同等物を受け取ります。実際に辞書を作成してから、その辞書を使用してJasonResponseを作成すると、それが機能します。serializers.serializeをutf-8で使用する方法が見つかりません。

jsonが受信しました(u00f1はñ)

// 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"
}
}
]"

回答:

回答№1は2

を使用してシリアル化することを書いたことを知っています django.core.serializers.serialize しかし...あなたは回避策を行い、使用してシリアル化することができます json 標準ライブラリ。

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)

私は追加しました default=str 〜へのパラメータ json.dumps モデルにdatetimeフィールドがあることがわかったので、その問題に対処する必要があります。