django实现将后台model对象转换成json对象并传递给前端jquery
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、返回前进行对象转换:
returnHttpResponse(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\nErrorNO:auditSqlOrder.getObjById") } });
补充知识:django将model转换成想要的json格式
model:
classSysRole(models.Model): id=models.CharField(db_column='ID',primary_key=True,max_length=50)#Fieldnamemadelowercase. rolename=models.CharField(db_column='RoleName',max_length=50)#Fieldnamemadelowercase. description=models.CharField(db_column='Description',max_length=200,blank=True,null=True)#Fieldnamemadelowercase. querycode=models.CharField(db_column='QueryCode',max_length=200,blank=True,null=True)#Fieldnamemadelowercase. isdisabled=models.CharField(db_column='IsDisabled')#Fieldnamemadelowercase.Thisfieldtypeisaguess. def__unicode__(self): returnself.rolename #将属性和属性值转换成dict列表生成式 deftoDict(self): returndict([(attr,getattr(self,attr))forattrin[f.nameforfinself._meta.fields]])#type(self._meta.fields).__name__ classMeta: managed=False db_table='sys_role'
#遍历查询集调用model属性转换成dict defqueryset_to_json(queryset): obj_arr=[] foroinqueryset: obj_arr.append(o.toDict()) returnobj_arr
#获取角色分页列表 defget_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 returnjson.dumps(_data_page_json,ensure_ascii=False)
在model上加入toDict方法然后执行查询得到queryset遍历它将queryset里的每个model执行他的todict方法转换成字典格式之后统一调用json.dumps方法转json
以上这篇django实现将后台model对象转换成json对象并传递给前端jquery就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。