django框架學習:十四.django 查詢結果轉json


前言

django查詢結果返回的都是可迭代的queryset序列,如果不太習慣這種數據的話,可以用serializers方法轉成json數據,更直觀,返回json數據需要用到JsonResponse ,django 查詢數據庫返回json數據有3種方法“:

serializers轉json

model_to_dict轉字典

values轉list (最簡單推薦此種方法)

JsonRespoonse

json是常見的數據交換格式,有時需要返回一個json格式的數據,而JsonResponse提供了一個快捷的方法。

屬於HttpResponse的一個子類,用來幫助用戶創建Json編碼的響應。下面我們學習一下JsonResponse構造函數:

data:應該傳遞一個標准的跑一趟紅字典給它,將其轉換成json數據。

encoder:默認為django.core.serializers.json.DjangoJSONEncoder,用於序列化data,更多信息參見JSON序列化。

safe:默認為True,如果設置為False,可以傳遞任何對象進行序列化(否則,只允許dict實例)。

另外:默認Content-Type 頭部設置為applicatyion-json

json_dumps_params:在1.9版本中新增,可以傳遞python標准的json庫中,json.dump()方法處理后生成一個響應。

用法:

views.py文件導入JsonResponse,創建視圖函數

 

urls.py文件路徑添加訪問路徑

終端啟動django服務:python manage.py runserver 0.0.0.0:8000

打開瀏覽器訪問

serializers轉json

django里有個serializers方法可以直接把查詢的結果轉成json數據

先導入serializers方法

from django.core import serializers

import json

 

 

配置urls.py 訪問路徑

 

 返回的結果如下:

{"result": [{"model": "ke24.user", "pk": "liushui", "fields": {"psw": "123456", "mail": "123456@163.com"}}, {"model": "ke24.user", "pk": "liushui0", "fields": {"psw": "12345", "mail": "123@qq.com"}}, {"model": "ke24.user", "pk": "liushui1", "fields": {"psw": "123", "mail": "123456@qq.com"}}, {"model": "ke24.user", "pk": "liushui11", "fields": {"psw": "123456", "mail": "897564"}}]}

 model_to_dict 轉字典

上面的方法雖然可以轉換成json數據,但是上面返回的結果里面有一些多余的字段modle和pk,不需要。

介紹一下第二種方法使用model_to_dict方法把查詢的queryset尋列結果轉成字典序列

 

 配置urls.py 訪問路徑

 

瀏覽器返回結果如下: 

[{"user_name": "liushui", "psw": "123456", "mail": "123456@163.com"}, {"user_name": "liushui0", "psw": "12345", "mail": "123@qq.com"}, {"user_name": "liushui1", "psw": "123", "mail": "123456@qq.com"}, {"user_name": "liushui11", "psw": "123456", "mail": "897564"}]

 

 values() 轉list

這種方法不需要導入方法,使用values方法獲取一個可迭代的dict序列,在使用list函數轉成list對象

 

 

獲得的返回數據如下:

{"data": [{"user_name": "liushui", "psw": "123456", "mail": "123456@163.com"}, {"user_name": "liushui0", "psw": "12345", "mail": "123@qq.com"}, {"user_name": "liushui1", "psw": "123", "mail": "123456@qq.com"}, {"user_name": "liushui11", "psw": "123456", "mail": "897564"}]}

 

 

{"result": [{"model": "ke24.user", "pk": "liushui", "fields": {"psw": "123456", "mail": "123456@163.com"}}, {"model": "ke24.user", "pk": "liushui0", "fields": {"psw": "12345", "mail": "123@qq.com"}}, {"model": "ke24.user", "pk": "liushui1", "fields": {"psw": "123", "mail": "123456@qq.com"}}, {"model": "ke24.user", "pk": "liushui11", "fields": {"psw": "123456", "mail": "897564"}}]}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM