django查詢到的結果,用JsonResponse返回在頁面上顯示相似於\u4e2d\u6587 ,注意這個不叫亂碼,這個是unicode編碼,python3默認返回的編碼html
接着前面的User表,測試數據以下python
user_name | psw | |
---|---|---|
yoyo | 123456 | 283340479@qq.com |
yoyo2 | 111111 | 1 |
yoyo5 | 111111 | 0 |
接着上一篇【python測試開發django-15.查詢結果轉json(serializers)】,若是數據庫裏面有中文的數據,
返回的json數據中文不能正常顯示以下,查詢的結果中有{"user_name": "\u4e0a\u6d77-\u60a0\u60a0", "psw": "\u5bc6\u7801", "mail": "\u4e2d\u6587"}數據庫
{ "data": [{ "user_name": "yoyo", "psw": "123456", "mail": "283340479@qq.com" }, { "user_name": "yoyo2", "psw": "111111", "mail": "1" }, { "user_name": "yoyo5", "psw": "111111", "mail": "0" }, { "user_name": "\u4e0a\u6d77-\u60a0\u60a0", "psw": "\u5bc6\u7801", "mail": "\u4e2d\u6587" }] }
JsonResponse裏面有個參數json_dumps_params,設置爲json_dumps_params={'ensure_ascii':False}便可django
class JsonResponse(data, encoder=DjangoJSONEncoder, safe=True, json_dumps_params=None, **kwargs) data: 應該傳遞一個標準的 python 字典給它,它將其轉換成 json 格式的數據。 encoder:默認爲 django.core.serializers.json.DjangoJSONEncoder,用於序列化data。關於這個序列化的更多信息參見JSON 序列化。 safe : 默認爲True。若是設置爲False,能夠傳遞任何對象進行序列化(不然,只容許dict 實例)。若是safe 爲True,而第一個參數傳遞的不是dict 對象,將拋出一個TypeError。 另外:它的默認 Content-Type 頭部設置爲application/json。 json_dumps_params:在1.9版本中新增,能夠傳遞一個python標準的 json 庫中,json.dump() 方法處理後的對象給它,用於生成一個響應。
修改後代碼(上一篇的三種方法都適用)json
def json_data(request): '''values()獲取的可迭代dict對象轉list''' data = {} ret = User.objects.all().values() data["data"] = list(ret) return JsonResponse(data, safe=False, json_dumps_params={'ensure_ascii':False})
在urls.py配置訪問地址 url(r'^json_data$', testdb.json_data,訪問後獲得的結果(返回的數據本身在線解析過)app
{ "data": [{ "user_name": "yoyo", "psw": "123456", "mail": "283340479@qq.com" }, { "user_name": "yoyo2", "psw": "111111", "mail": "1" }, { "user_name": "yoyo5", "psw": "111111", "mail": "0" }, { "user_name": "上海-悠悠", "psw": "密碼", "mail": "中文" }] }
django交流QQ羣:779429633測試