1. 程式人生 > >關於view.py 中 ajax json 的用法

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