django-将数据库数据转换成JSON格式(ORM和SQL两种情况)

最近打算搞一个自动化运维平台,所以在看Django的知识。

在实际项目开发中,遇到一个小问题:前后端发生数据交互主流采用的是JSON。前端传数据到服务器端比较简单,稍微麻烦的是服务器端传JSON到前端。

首先数据是从数据库中获取的,Django默认使用的是ORM技术,但是作为一个运维人员,我其实比较反感这类抽象出来的API。因为尽管它对于开发人员来说,将数据库的表抽象成了一个对象,便于开发,不需要写SQL语句,但是这也是后期程序造成性能瓶颈的罪魁祸首(再做一次故障处理时,遇到一条70几行的SQL语句。。。。。),另外对于一个运维人员来说,纯SQL是基本能力,再次去学习ORM的语法,无形中又增加了学习成本。

不管怎么说,这次的主题是将从数据库获取数据转换成JSON,下面会将用ORM和SQL两种方式都拿出来分享。

1.采用Django Model层,ORM技术  转换成JSON格式

1 def getdata(request):
2    # 使用ORM
3    # all()返回的是QuerySet 数据类型;values()返回的是ValuesQuerySet 数据类型
4    data = models.VM.objects.values(‘id‘, ‘ip‘, ‘host‘, ‘username‘)
5    data = serializers.serialize("json", tomcats)
6    return JsonResponse(list(data), safe=False)

2.完全弃用Django Model层,纯SQL  转换成JSON格式

1 def getdata(request):
2 # 使用SQL
3     with connection.cursor() as cursor:
4         cursor.execute(‘select id, machine, tomcathome, ipaddress, description from tomcatData‘)
5         data = dictfetchall(cursor)
6     return JsonResponse(data, safe=False, json_dumps_params={‘ensure_ascii‘: False})

JsonResponse 对象:

class JsonResponse(data, encoder=DjangoJSONEncoder, safe=True, json_dumps_params=None,**kwargs)

这个类是HttpRespon的子类,它主要和父类的区别在于:

1.它的默认Content-Type 被设置为: application/json

2.第一个参数,data应该是一个字典类型,当 safe 这个参数被设置为:False ,那data可以填入任何能被转换为JSON格式的对象,比如list, tuple, set。 默认的safe 参数是 True. 如果你传入的data数据类型不是字典类型,那么它就会抛出 TypeError的异常。

3.json_dumps_params参数是一个字典,它将调用json.dumps()方法并将字典中的参数传入给该方法。

通过以上的解释,上面两个方法的JsonResponse()里面传入的参数就很清晰明了。

这样数据就会以JSON格式传入到前端,前端就能用AJAX获取到,并进行处理或者展示了。

				
时间: 2024-08-11 01:35:57

django-将数据库数据转换成JSON格式(ORM和SQL两种情况)的相关文章

android实现json数据的解析和把数据转换成json格式的字符串

利用android sdk里面的 JSONObject和JSONArray把集合或者普通数据,转换成json格式的字符串 JSONObject和JSONArray解析json格式的字符串为集合或者一般数据 package com.hck.test; import java.util.ArrayList; import java.util.List; import org.json.JSONArray; import org.json.JSONException; import org.json.

SSM将后台获取的数据转换成json格式传递到前台页面

1.后台从数据库中获取数据,传递到response中 这一步折腾了我一整天,不知道是因为没有传递到response中还是其他的原因,在前台获取的data,使用alert(data)输出的一直为空值或null有两种方式可以实现这一步.一是利用注解@ResponseBody,二是利用PrintWriter.最终我是通过@ResponseBody成功完成了这一步,而不知道为什么利用PrintWriter总是写不成功,具体的原因我后面再研究研究吧.下面来介绍下这两种实现方式: (1)@ResponseB

表单数据转换成json格式数据

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <script src="js/jquery.min.js"></script> <script type="text/javascript"> (funct

C#自定义将各种对象转换成JSON格式的类

这个C#封装类可以用于将各种格式的数据转换成JSON格式,包括List转换成Json,普通集合转换Json ,DataSet转换为Json ,Datatable转换为Json ,DataReader转换为Json等,如果你需要将对象转换成JSON,可以使用这个类. using System; using System.Collections.Generic; using System.Text; using System.Data; using System.Reflection; using

数据库记录转换成json格式 (2011-03-13 19:48:37) (转)

http://blog.sina.com.cn/s/blog_621768f30100r6v7.html 数据库记录转换成json格式 (2011-03-13 19:48:37) 转载▼ 标签: 杂谈   <?php/1.在company数据user表中取出10条数据,保存为数组2.在将数组转化为json格式,传递给js3.用json解析器将传递过来的json字符串转化为json对象,4.用document.write输出语句打印在页面上*/ $conn = mysql_connect(“loc

C#将datatable数据转换成JSON数据的方法

json数据类型格式:[{id:"1",code:"1",description:"博士"},{id:"2",code:"2",description:"硕士"},{id:"3",code:"3",description:"学士"}] //参考代码public string DataTableToJson(string json

Java基本数据转换成Json代码

JSON是一种轻量级的数据交换格式,非常适合于服务器与 JavaScript 的交互.是移动开发中数据客户端和服务器端数据交互的不二选择; 尤其是现在HTML5的流行,更显着使用Json 完成数据交互的重要性. 在这里, 我将演示一下Java基本数据转换为Json代码 Json必需包 json-lib-2.3-jdk15.jar commons-lang-2.4.jar commons-logging-1.0.4.jar ezmorph-1.0.6.jar commons-collections

java将XML文档转换成json格式数据

功能 将xml文档转换成json格式数据 说明 依赖包: 1. jdom-2.0.2.jar : xml解析工具包; 2. fastjson-1.1.36.jar : 阿里巴巴研发的高性能json工具包 程序源码 package com.xxx.open.pay.util; import com.alibaba.fastjson.JSONObject; import org.jdom2.Element; import org.jdom2.JDOMException; import org.jdo

DtatTable转成Json格式

///<summary> /// DataTable转成Json ///</summary> ///<param name="dt"></param> ///<returns></returns> publicstaticstring DataTableToJson(DataTable dt) { StringBuilder jsonBuilder = newStringBuilder(); jsonBuilder