django实现将后台model对象转换成json对象并传递给前端jquery


Posted in Python onMarch 16, 2020

1、django的model转json对象。

1.1、单个modle转换,返回json对象:

sqlOrder = get_object_or_404(SqlOrder,id=request.GET.get("id"))
objJson = serialize('json',[sqlOrder])[1:-1]
{"model": "sqlapply.sqlorder", "pk": 2, "fields": {"work_id": "{now}{_ran}", "username": "admin", "status": 3, "type": 0, "backup": 0}}

注意:objJson["fields"]["username"] 才能获得想要属性值。objJson["pk"]获得主键值。

1.2、querySet转换:

json_data = serializers.serialize("json", MyModel.objects.all())

2、转换后的json对象作为子元素传递到前端:

2.1、将json对象转换成字符串。(单引号包含属性)。

objStr = json.loads(objJson)

2.2、组拼json对象。

response_data = {'statcode': '1', 'data':objStr}

2.3、返回前进行对象转换:

return HttpResponse(json.dumps(response_data))

2.4、前端接受并获取:

$.ajax({
      url: "{% url 'sqlapply:auditSqlOrder' %}",
      type:"GET",
      data:{"id":id,"args":"getObjById"},
      success:function(result){
        res = jQuery.parseJSON(result);  #关键代码!!!!解析一个 JSON 字符串'{"name":"John"}'为Json对象。
        if (res["statcode"] == "1") {
          objStr = res["data"];
          console.log(objStr["fields"]["username"]);#获取方式1
      alert(objStr.fields.username);#获取方式2
        }
      },
      error:function(){
        alert("访问异常,请截图联系管理员 \t\n ErrorNO:auditSqlOrder.getObjById")
      }
    });

补充知识:django 将model转换成想要的json格式

model:

class SysRole(models.Model):
  id = models.CharField(db_column='ID', primary_key=True, max_length=50) # Field name made lowercase.
  rolename = models.CharField(db_column='RoleName', max_length=50) # Field name made lowercase.
  description = models.CharField(db_column='Description', max_length=200, blank=True, null=True) # Field name made lowercase.
  querycode = models.CharField(db_column='QueryCode', max_length=200, blank=True, null=True) # Field name made lowercase.
  isdisabled = models.CharField(db_column='IsDisabled') # Field name made lowercase. This field type is a guess.
 
  def __unicode__(self):
    return self.rolename
  # 将属性和属性值转换成dict 列表生成式
  def toDict(self):
    return dict([(attr, getattr(self, attr)) for attr in [f.name for f in self._meta.fields]])#type(self._meta.fields).__name__
  class Meta:
    managed = False
    db_table = 'sys_role'
# 遍历查询集 调用model属性转换成dict
def queryset_to_json(queryset):
    obj_arr=[]
    for o in queryset:
        obj_arr.append(o.toDict())
    return obj_arr
# 获取角色分页列表
  def get_roles_page(self,_page,_limit):
    _roles = SysRole.objects.all()[(int(_page)-1)*int(_limit):int(_page)*int(_limit)]
    _count = SysRole.objects.all().count()
    _dict_roles = tools.queryset_to_json(_roles)
    _data_page_json = {}
    _data_page_json['Rows']=_dict_roles
    _data_page_json['Total']=_count
    return json.dumps(_data_page_json,ensure_ascii=False)

在model上加入toDict方法 然后执行查询 得到queryset 遍历它 将queryset里的每个model执行他的todict方法 转换成字典格式 之后统一调用json.dumps方法转json

以上这篇django实现将后台model对象转换成json对象并传递给前端jquery就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python比较两个图片相似度的方法
Mar 13 Python
Python编程中的文件操作攻略
Oct 16 Python
从源码解析Python的Flask框架中request对象的用法
Jun 02 Python
Python画柱状统计图操作示例【基于matplotlib库】
Jul 04 Python
Python的Tkinter点击按钮触发事件的例子
Jul 19 Python
Django ORM 查询管理器源码解析
Aug 05 Python
关于Python3 lambda函数的深入浅出
Nov 27 Python
PyCharm 2019.3发布增加了新功能一览
Dec 08 Python
python使用openCV遍历文件夹里所有视频文件并保存成图片
Jan 14 Python
python3 Scrapy爬虫框架ip代理配置的方法
Jan 17 Python
python 生成任意形状的凸包图代码
Apr 16 Python
python实现视频压缩功能
Dec 18 Python
Python读写操作csv和excle文件代码实例
Mar 16 #Python
django模型动态修改参数,增加 filter 字段的方式
Mar 16 #Python
Python Django2 model 查询介绍(条件、范围、模糊查询)
Mar 16 #Python
python高阶函数map()和reduce()实例解析
Mar 16 #Python
Django models filter筛选条件详解
Mar 16 #Python
python递归调用中的坑:打印有值, 返回却None
Mar 16 #Python
django 前端页面如何实现显示前N条数据
Mar 16 #Python
You might like
那些年我们错过的魔术方法(Magic Methods)
2014/01/14 PHP
PHP移动文件指针ftell()、fseek()、rewind()函数总结
2014/11/18 PHP
laravel实现按时间日期进行分组统计方法示例
2019/03/23 PHP
JS中style属性
2006/10/11 Javascript
JavaScript中两个感叹号的作用说明
2011/12/28 Javascript
javascript制作坦克大战全纪录(2)
2014/11/27 Javascript
Window.Open打开窗体和if嵌套代码
2016/04/15 Javascript
js中数组的常用方法小结
2016/12/30 Javascript
Angular.JS中指令ng-if的注意事项小结
2017/06/21 Javascript
bootstrap响应式导航条模板使用详解(含下拉菜单,弹出框)
2017/11/17 Javascript
vue项目部署上线遇到的问题及解决方法
2018/06/10 Javascript
create-react-app使用antd按需加载的样式无效问题的解决
2019/02/26 Javascript
[01:14]2014DOTA2展望TI 剑指西雅图newbee战队专访
2014/06/30 DOTA
python根据路径导入模块的方法
2014/09/30 Python
Python之PyUnit单元测试实例
2014/10/11 Python
python文件与目录操作实例详解
2016/02/22 Python
Python中二维列表如何获取子区域元素的组成
2017/01/19 Python
Python实战购物车项目的实现参考
2019/02/20 Python
Python字符串的常见操作实例小结
2019/04/08 Python
django认证系统 Authentication使用详解
2019/07/22 Python
selenium2.0中常用的python函数汇总
2019/08/05 Python
python3 反射的四种基本方法解析
2019/08/26 Python
Python通过cv2读取多个USB摄像头
2019/08/28 Python
杭州时比特电子有限公司SQL
2013/08/22 面试题
什么是三层交换,说说和路由的区别在那里
2014/09/01 面试题
日期和时间问题
2015/01/04 面试题
技校毕业生的自我评价
2013/12/27 职场文书
车辆转让协议书
2014/04/15 职场文书
环保志愿者活动总结
2014/06/27 职场文书
工作作风承诺书
2014/08/30 职场文书
司机工作自我鉴定
2014/09/19 职场文书
2014年员工工作总结范文
2014/11/18 职场文书
公司借条范本
2015/05/25 职场文书
银行大堂经理培训心得体会
2016/01/09 职场文书
浅谈pytorch中的dropout的概率p
2021/05/27 Python
python使用PySimpleGUI设置进度条及控件使用
2021/06/10 Python