關於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)