关于view.py 中 ajax json 的用法

本文详述了在Django中如何正确处理查询集,将其转换为字典以供render方法使用,以及如何将查询集转化为JSON格式,确保数据能被正确解析,避免常见错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、

data=models.Citys.objects.filter(upid=0)

data 的数据形式是一个查询集(也是一个列表,查询出来的每一条数据是一个对象):

<QuerySet [<Citys: Citys object>, <Citys: Citys object>, <Citys: Citys object>, <Citys: Citys object>, <Citys: Citys object>, <Citys: Citys object>, <Citys: Citys object>, <Citys: Citys object>, <Citys: Citys object>, <Citys: Citys object>, <Citys: Citys object>, <Citys: Citys object>, <Citys: Citys object>, <Citys: Citys object>, <Citys: Citys object>, <Citys: Citys object>, <Citys: Citys object>, <Citys: Citys object>, <Citys: Citys object>, <Citys: Citys object>, '...(remaining elements truncated)...']> 

这种数据形式 ,不能作为render方法参数使用,render(request,'home/citys.html',data)   这种形式会报错,需要改成字典的形式才能使用render方法。如下

context={'data':data}

{'data': <QuerySet [<Citys: Citys object>, <Citys: Citys object>, <Citys: Citys object>, <Citys: Citys object>, <Citys: Citys object>, <Citys: Citys object>, <Citys: Citys object>, <Citys: Citys object>, <Citys: Citys object>, <Citys: Citys object>, <Citys: Citys object>, <Citys: Citys object>, <Citys: Citys object>, <Citys: Citys object>, <Citys: Citys object>, <Citys: Citys object>, <Citys: Citys object>, <Citys: Citys object>, <Citys: Citys object>, <Citys: Citys object>, '...(remaining elements truncated)...']>}

然后使用 return render(request,'home/citys.html',context) 就可以了

2、

json格式的默认解析字典形式的数据,像查询集(列表形式的字典,[{},{}]),会报错,所以我们要这样返回json时要这样做return JsonResponse(data,safe) ,加一个safe=False。json 不能解析对象或者对象的序列化,所以我们要models.Citys.objects.filter(upid = cid).values()  ,加一个.values() 。然后使用list()方法包括起来 data = list(models.Citys.objects.filter(upid = cid).values())    return JsonResponse(data,safe=False)

转载于:https://www.cnblogs.com/ziyun20160613/p/10126998.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值