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

作者:huoyuanshen 时间:2023-01-06 22:17:01 

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

来源:https://blog.csdn.net/huoyuanshen/article/details/85217825

标签:django,model,json,jquery
0
投稿

猜你喜欢

  • mysql varchar类型求和实例操作

    2024-01-14 05:39:21
  • PyTorch数据读取的实现示例

    2022-01-31 04:15:48
  • python图形开发GUI库pyqt5的基本使用方法详解

    2022-07-08 02:31:55
  • mac下给python3安装requests库和scrapy库的实例

    2023-11-06 09:44:52
  • 微信小程序 支付功能实现PHP实例详解

    2023-11-19 08:53:36
  • Python高级特性切片(Slice)操作详解

    2022-04-07 20:28:02
  • JS如何实现在弹出窗口中加载页面

    2024-04-29 14:07:53
  • Python 中迭代器与生成器实例详解

    2023-02-27 14:47:41
  • Hibernate Oracle sequence的使用技巧

    2023-07-06 05:18:42
  • 解决ajax+php中文乱码的方法详解

    2024-06-05 09:49:08
  • Python set集合类型操作总结

    2023-10-26 03:35:15
  • php随机取mysql记录方法小结

    2023-11-22 22:27:22
  • Python基础详解之邮件处理

    2021-03-16 09:27:58
  • 高效测试用例组织算法pairwise之Python实现方法

    2021-07-22 01:09:49
  • Python import与from import使用和区别解读

    2021-06-22 08:51:02
  • 520必备!这些Python表白代码祝你脱单成功

    2023-01-29 15:16:39
  • Python常见工厂函数用法示例

    2023-08-17 00:50:25
  • 提高CSS代码的可读性

    2008-05-11 18:59:00
  • pytorch torchvision.ImageFolder的用法介绍

    2023-05-29 17:20:49
  • Python脚本完成post接口测试的实例

    2022-01-01 15:40:22
  • asp之家 网络编程 m.aspxhome.com