经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » Django » 查看文章
Django 查询数据库返回JSON的实现
来源:jb51  时间:2021/8/9 10:21:40  对本文有异议

和前端交互全部使用JSON,如何将数据库查询结果转换成JSON格式

返回多条数据

示例

  1. import json
  2. from django.http import HttpResponse
  3. from django.core import serializers
  4. def db_to_json(request):
  5. scripts = Scripts.objects.all()[0:1]
  6. json_data = serializers.serialize('json', scripts)
  7. return HttpResponse(json_data, content_type="application/json")

返回结果

  1. [{
  2. "fields": {
  3. "script_content": "abc",
  4. "script_type": "1"
  5. },
  6. "model": "home_application.scripts",
  7. "pk": "03a0a7cf-567a-11e9-8566-9828a60543bb"
  8. }]

功能实现了,但是我需要返回一个约定好的JSON格式,查询结果放在 data 中

 {"message": 'success', "code": '0', "data": []}

代码如下:

  1. import json
  2. from django.http import HttpResponse
  3. from django.core import serializers
  4. def db_to_json2(request):
  5. # 和前端约定的返回格式
  6. result = {"message": 'success', "code": '0', "data": []}
  7. scripts = Scripts.objects.all()[0:1]
  8. # 序列化为 Python 对象
  9. result["data"] = serializers.serialize('python', scripts)
  10. # 转换为 JSON 字符串并返回
  11. return HttpResponse(json.dumps(result), content_type="application/json")

调用结果

  1. {
  2. "message": "success",
  3. "code": "0",
  4. "data": [{
  5. "fields": {
  6. "script_content": "abc",
  7. "script_type": "1"
  8. },
  9. "model": "home_application.scripts",
  10. "pk": "03a0a7cf-567a-11e9-8566-9828a60543bb"
  11. }]
  12. }

有点难受的是,每条数据对象包含 fields,model,pk三个对象,分别代表字段、模型、主键,我更想要一个只包含所有字段的字典对象。虽然也可以处理,但还是省点性能,交给前端解析吧。

返回单个对象

代码:

  1. from django.forms.models import model_to_dict
  2. from django.http import HttpResponse
  3. import json
  4. def obj_json(request):
  5. pk = request.GET.get('script_id')
  6. script = Scripts.objects.get(pk=pk)
  7. # 转为字典类型
  8. script = model_to_dict(script)
  9. return HttpResponse(json.dumps(script), content_type="application/json")

返回JSON:

  1. {
  2. "script_id": "1534d8f0-59ad-11e9-a310-9828a60543bb",
  3. "script_content": "3",
  4. "script_name": "3",
  5. "script_type": "1"
  6. }

到此这篇关于Django 查询数据库返回JSON的实现的文章就介绍到这了,更多相关Django 返回JSON内容请搜索w3xue以前的文章或继续浏览下面的相关文章希望大家以后多多支持w3xue!

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号