Django 查詢數據庫返回JSON的實現
和前端交互全部使用JSON,如何將數據庫查詢結果轉換成JSON格式
返回多條數據
示例
import json from django.http import HttpResponse from django.core import serializers def db_to_json(request): scripts = Scripts.objects.all()[0:1] json_data = serializers.serialize('json', scripts) return HttpResponse(json_data, content_type="application/json")
返回結果
[{ "fields": { "script_content": "abc", "script_type": "1" }, "model": "home_application.scripts", "pk": "03a0a7cf-567a-11e9-8566-9828a60543bb" }]
功能實現瞭,但是我需要返回一個約定好的JSON格式,查詢結果放在 data 中
{“message”: ‘success’, “code”: ‘0’, “data”: []}
代碼如下:
import json from django.http import HttpResponse from django.core import serializers def db_to_json2(request): # 和前端約定的返回格式 result = {"message": 'success', "code": '0', "data": []} scripts = Scripts.objects.all()[0:1] # 序列化為 Python 對象 result["data"] = serializers.serialize('python', scripts) # 轉換為 JSON 字符串並返回 return HttpResponse(json.dumps(result), content_type="application/json")
調用結果
{ "message": "success", "code": "0", "data": [{ "fields": { "script_content": "abc", "script_type": "1" }, "model": "home_application.scripts", "pk": "03a0a7cf-567a-11e9-8566-9828a60543bb" }] }
有點難受的是,每條數據對象包含 fields,model,pk三個對象,分別代表字段、模型、主鍵,我更想要一個隻包含所有字段的字典對象。雖然也可以處理,但還是省點性能,交給前端解析吧。
返回單個對象
代碼:
from django.forms.models import model_to_dict from django.http import HttpResponse import json def obj_json(request): pk = request.GET.get('script_id') script = Scripts.objects.get(pk=pk) # 轉為字典類型 script = model_to_dict(script) return HttpResponse(json.dumps(script), content_type="application/json")
返回JSON:
{ "script_id": "1534d8f0-59ad-11e9-a310-9828a60543bb", "script_content": "3", "script_name": "3", "script_type": "1" }
到此這篇關於Django 查詢數據庫返回JSON的實現的文章就介紹到這瞭,更多相關Django 返回JSON內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- Django框架HttpResponse和HttpRequest對象學習
- Python3+PyCharm+Django+Django REST framework配置與簡單開發教程
- python Django實現增刪改查實戰代碼
- Django學習筆記之View操作指南
- Django實現文件分享系統的完整代碼