django實(shí)現(xiàn)將后臺(tái)model對(duì)象轉(zhuǎn)換成json對(duì)象并傳遞給前端jquery
1、django的model轉(zhuǎn)json對(duì)象。
1.1、單個(gè)modle轉(zhuǎn)換,返回json對(duì)象:
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轉(zhuǎn)換:
json_data = serializers.serialize("json", MyModel.objects.all())
2、轉(zhuǎn)換后的json對(duì)象作為子元素傳遞到前端:
2.1、將json對(duì)象轉(zhuǎn)換成字符串。(單引號(hào)包含屬性)。
objStr = json.loads(objJson)
2.2、組拼json對(duì)象。
response_data = {'statcode': '1', 'data':objStr}
2.3、返回前進(jìn)行對(duì)象轉(zhuǎn)換:
return HttpResponse(json.dumps(response_data))
2.4、前端接受并獲?。?/p>
$.ajax({
url: "{% url 'sqlapply:auditSqlOrder' %}",
type:"GET",
data:{"id":id,"args":"getObjById"},
success:function(result){
res = jQuery.parseJSON(result); #關(guān)鍵代碼?。。?!解析一個(gè) JSON 字符串'{"name":"John"}'為Json對(duì)象。
if (res["statcode"] == "1") {
objStr = res["data"];
console.log(objStr["fields"]["username"]);#獲取方式1
alert(objStr.fields.username);#獲取方式2
}
},
error:function(){
alert("訪問(wèn)異常,請(qǐng)截圖聯(lián)系管理員 \t\n ErrorNO:auditSqlOrder.getObjById")
}
});
補(bǔ)充知識(shí):django 將model轉(zhuǎn)換成想要的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
# 將屬性和屬性值轉(zhuǎn)換成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'
# 遍歷查詢集 調(diào)用model屬性轉(zhuǎn)換成dict
def queryset_to_json(queryset):
obj_arr=[]
for o in queryset:
obj_arr.append(o.toDict())
return obj_arr
# 獲取角色分頁(yè)列表
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方法 然后執(zhí)行查詢 得到queryset 遍歷它 將queryset里的每個(gè)model執(zhí)行他的todict方法 轉(zhuǎn)換成字典格式 之后統(tǒng)一調(diào)用json.dumps方法轉(zhuǎn)json
以上這篇django實(shí)現(xiàn)將后臺(tái)model對(duì)象轉(zhuǎn)換成json對(duì)象并傳遞給前端jquery就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python利用多線程優(yōu)化for循環(huán)的技巧分享
多線程可以讓程序同時(shí)執(zhí)行多個(gè)任務(wù),從而提高整體運(yùn)行效率,這篇文章將詳細(xì)介紹如何在Python中使用多線程來(lái)優(yōu)化for循環(huán),感興趣的可以了解下2025-02-02
python中內(nèi)置庫(kù)csv的使用及說(shuō)明
這篇文章主要介紹了python中內(nèi)置庫(kù)csv的使用及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11
Python通過(guò)paramiko庫(kù)實(shí)現(xiàn)遠(yuǎn)程執(zhí)行l(wèi)inux命令的方法
這篇文章主要介紹了Python通過(guò)paramiko庫(kù)實(shí)現(xiàn)遠(yuǎn)程執(zhí)行l(wèi)inux命令,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-03-03
django報(bào)錯(cuò)設(shè)置auth User的解決
本文主要介紹了django報(bào)錯(cuò)設(shè)置auth User的解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07
使用Python實(shí)現(xiàn)WebSocket服務(wù)器與客戶端通信功能
WebSocket?是一種基于?TCP?協(xié)議的通信協(xié)議,能夠在客戶端與服務(wù)器之間進(jìn)行全雙工(雙向)通信,相比傳統(tǒng)的?HTTP?協(xié)議,WebSocket?可以實(shí)現(xiàn)實(shí)時(shí)數(shù)據(jù)的傳輸,我通過(guò)?Python?實(shí)現(xiàn)一個(gè)簡(jiǎn)單的?WebSocket?服務(wù)器,并使其與客戶端進(jìn)行通信,需要的朋友可以參考下2024-12-12
使用Python內(nèi)置模塊與函數(shù)進(jìn)行不同進(jìn)制的數(shù)的轉(zhuǎn)換
這篇文章主要介紹了使用Python內(nèi)置模塊與函數(shù)進(jìn)行不同進(jìn)制的數(shù)的轉(zhuǎn)換,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04

