关于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)