2017-01-24 33 views
1

IM,但我有特殊字符(NAE等)特殊字符(UTF-8)在Django使用在Django JSON响应jsonresponse

我看来

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序列化器。序列化的方法。

JSON收到(该u00f1是N)

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

回答

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,因为我看到你在模型中有日期时间字段,所以应该对这一问题的关心。

+0

是的,这工作,也使用字典作品,与对象.__ dict__方法(现在我实际上使用这种解决方案)。我只是想知道是否有一些方法来使用serializers.serialize与特殊字符。 –