django實現將後臺model物件轉換成json物件並傳遞給前端jquery
阿新 • • 發佈:2020-03-18
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',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就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。