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内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • django实现HttpResponse返回json数据为中文

    Python3读取写入json的中文乱码问题 之前我用django一般用JsonResponse来返回json数据格式 但是发现返回中文的时候会乱码 from django.http import JsonResponse def test(request): result = {"result": 0, "msg": "执行成功"} return return JsonResponse(result) 这种方式返回简单,但是中文会乱码 现在改成

  • Django2.1.7 查询数据返回json格式的实现

    需求问题 在日常工作中,对于前端发送过来的请求,后端django大部分都是采用json格式返回,也有采用模板返回视图的方式. 在模板返回视图的方式的确很方便,但是如果涉及到动静分离.ajax请求这类,django就只能返回json格式的数据了. 那么这里就带来了一个问题,如何将django从数据库模型类中查询的数据以json格式放回前端. 然后前端如果获取读取返回过来的数据呢? 环境说明 前端采用jquery发送ajax请求 python 3.7.2 django 2.1.7 示例说明 这次示例

  • Django 返回json数据的实现示例

    在一个网站,大量数据的前后端交互,JSON是最好的传递数据方式了. 在Django中,使用JSON传输数据,有两种方式,一种是使用Python的JSON包,一种是使用Django的JsonResponse 方法一:使用Python的JSON包 from django.shortcuts import HttpResponse import json def testjson(request): data={ 'patient_name': '张三', 'age': '25', 'patient_

  • Django中使用Json返回数据的实现方法

    在一个网站在,大量数据与前端交互,JSON是最好的传递数据方式了. 在Django中,使用JSON传输数据,有两种方式,一种是使用Python的JSON包,一种是使用Django的JsonResponse 方法一:使用Python的JSON包 from django.shortcuts import HttpResponse import json def testjson(request): data={ 'patient_name': '张三', 'age': '25', 'patient_

  • Django返回json数据用法示例

    本文实例讲述了Django返回json数据用法.分享给大家供大家参考,具体如下: 1.前端.jQuery发送GET请求,并解析json数据.getJSON方法可参考这里. url = "http://example/?question=" + question + "&rand=" + Math.random(); $.getJSON(url, function(json){ answer = json.answer; alert(answer); });

  • Django+RestFramework API接口及接口文档并返回json数据操作

    系统:ubuntu18.04 x64 GitHub:https://github.com/xingjidemimi/DjangoAPI.git 安装 pip install django==2.1.5 pip install djangorestframework # rest api pip install coreapi pygments markdown # 自动化接口文档 API示例 创建django项目 django-admin startproject DjangoAPI 创建应用

  • 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',

  • php简单实现查询数据库返回json数据

    示例代码一: // 设置返回json格式数据 header('content-type:application/json;charset=utf8'); //连接数据库 $link = mysql_connect("localhost", "root", "root") or die("Unable to connect to the MySQL!"); mysql_query("SET NAMES 'UTF8'&q

  • Django 查询数据库并返回页面的例子

    views.py 视图文件 message = None all_message = UserMessage.objects.filter(name='测试2') if all_message: message = all_message[0] return render(request, 'message_form.html',{ 'my_message':message }) .html 模板文件 <input id="name" type="text"

  • python查询mysql,返回json的实例

    如下所示: import MySQLdb import json def getSql(): try: con = MySQLdb.connect(host='localhost', user='', passwd='', db='test', charset='utf8') cursor = con.cursor() sql = "select * from user" cursor.execute(sql) results = cursor.fetchmany(5) users =

  • 解决Django响应JsonResponse返回json格式数据报错问题

    代码 return JsonResponse({"name": "tom"}) 报错: TYPEERROR: In order to allow non-dict objects to be serialized set the safe parmeter to False 解决: return JsonResponse({"name": "tom"}, safe=False) 增加safe=false,使其接受列表 补充知识

  • Django查询数据库的性能优化示例代码

    前言 Django数据层提供各种途径优化数据的访问,一个项目大量优化工作一般是放在后期来做,早期的优化是"万恶之源",这是前人总结的经验,不无道理.如果事先理解Django的优化技巧,开发过程中稍稍留意,后期会省不少的工作量. 现在有一张记录用户信息的UserInfo数据表,表中记录了10个用户的姓名,呢称,年龄,工作等信息. models文件 from django.db import models class Job(models.Model): title=models.Char

  • laravel 判断查询数据库返回值的例子

    在使用 Laravel Eloquent 模型时,我们可能要判断取出的结果集是否为空,但我们发现直接使用 is_null 或 empty 是无法判段它结果集是否为空的. var_dump 之后我们很容易发现,即使取到的空结果集, Eloquent 仍然会返回 Illuminate\Database\Eloquent\Collection 对象实例. 其实,Eloquent 已经给我们封装几个判断方法. $result = Model::where(...)->get(); //不为空则 if (

  • thinkPHP5实现的查询数据库并返回json数据实例

    本文实例讲述了thinkPHP5实现的查询数据库并返回json数据.分享给大家供大家参考,具体如下: TP5 实现查询数据库返回json数据(返回json数据函数实例) 返回结果: 复制代码 代码如下: {"code":0,"msg":"\u6570\u636e\u8fd4\u56de\u6210\u529f","count":1000,"data":[{"id":617,"t

随机推荐