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
猜你喜欢
- 备份还原数据库备份数据库企业管理器--或用SQL语句(完全备份):backup database 数据库 to
- 作为一个标准的程序猿,为程序编写说明文档是一步必不可少的工作,如何才能写的又好又快呢,下面我们就来详细探讨下吧。今天将告诉大家一个简单平时只
- 如下代码,限制某个函数在某个时间段的调用次数,灵感来源:python装饰器-限制函数调用次数的方法(10s调用一次) 欢迎访问原博客中指定的
- 一、修改密码1.1 创建修改密码控制器运行命令php artisan make:controller Auth/PasswordContro
- value_counts()方法返回一个序列Series,该序列包含每个值的数量(对于数据框中的任何列,value_counts()方法会返
- 背景在做deeplearning过程中,使用caffe的框架,一般使用matlab来处理图片(matlab处理图片相对简单,高效),用pyt
- 递归是以相似的方式重复项目的过程。同样适用于编程语言中,如果一个程序可以让你调用同一个函数被调用的函数,递归调用函数内使用如下。func r
- 前言图是一种抽象数据结构,本质和树结构是一样的。图与树相比较,图具有封闭性,可以把树结构看成是图结构的前生。在树结构中,如果把兄弟节点之间或
- 字体的处理在网页设计中无论怎么强调也不为过, 毕竟网页使用来传递信息的, 而最经典最直接的信息传递方式就是文字,&nbs
- Appium在前文的讲解中,我们学会了如何安装Appium,以及一些基础获取App元素内容的方式。但认真看过前文的读者,肯定在博主获取元素的
- 目前,很多互联网应用程序都提供了全文搜索功能,用户可以使用一个词或者词语片断作为查询项目来定位匹配的记录。在后台,这些程序使用在一个SELE
- 说明:关于类的这部分,我参考了《Learning Python》一书的讲解。创建类创建类的方法比较简单,如下:class Person:&n
- 导言在前面的教程里我们学习了DataList提供了一些风格样式的属性.而且我们还学习了如何定义HeadStyle, ItemStyle, A
- 这个跟ping那个差不多,ping的那个脚本就是通过这个改了下,大体一致,不过telnet的不需要判断返回的字符串。快一些这里具体需要tel
- 需要安装pywin32模块,pip install pywin32##pip install pywin32import win32api,
- 前言在《设计模式》一书中工厂模式提到了:工厂方法模式(Factory Method)抽象工厂模式 (Abstract Factory)但是在
- 当你用 ASP 编写服务器端应用程序时,必须依靠 ActiveX
- 由于工作需要,所以前一阵子将IE升级到了8.0,结果今天发现出现一个问题,eWebEditor的在线编辑器不好用了,仔细想想,肯定是IE8搞
- 导言GridView是由一组字段(Field)组成的,它们都指定的了来自DataSource中的什么属性需要用到自己的输出呈现中。最简单的字
- 说明:本文内容都是从Google上搜索来的,本想上http://www.alexa.com/查官方数据,访问非常慢暂且没查。使用本接口将返回