关于view.py 中 ajax json 的用法

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)

posted @ 2018-12-16 16:33  紫云~~  阅读(236)  评论(0编辑  收藏  举报