我在django中使用json响应,但我有特殊字符(ñáé等...)
我的观点
def get_agencies(request):
qr = Agency.objects.all()
qr_jason = serializers.serialize('json',qr)
return JsonResponse(qr_jason, safe=False)
但是如果我在json中输入一个像ñ这样的特殊字符,我会收到相同的ascii。实际上我可以创建一个字典,然后使用字典制作JasonResponse并且它可以工作,我找不到使用utf-8的serializers.serialize的方法。
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\"
}
}
]"
答案 0 :(得分:3)
我知道你写过你想使用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
,因为我看到您的模型中有一个日期时间字段,因此应该处理该问题。
答案 1 :(得分:1)
更快的解决方案:
def get_agencies(request):
qr = Agency.objects.all().values()
qr_list = list(qr)
return JsonResponse(qr_list, , safe=False, json_dumps_params={'ensure_ascii':False})