django前后端数据传输遇到的坑
目录
django前后端数据传输遇到的坑
最近因为学生原因,简单学习了以下django开设网站,中间遇到了不少前后端数据传输问题,总结一下,以供参考。
前端传后端
前端传后端的方式
1、直接在url中传递
可以直接用标签,如果要传简单数据,可以直接写在href属性的url中,感觉比Ajax快,复杂数据还是推荐ajax。
2、推荐Ajax
如果不需要跳转页面而是获取数据并修改本页面,用Ajax比较好,Ajax具体使用可以自行百度,主要说说遇到的坑
传数组回后端
Ajax直接在data中传数组回后端,django无法有效识别,需要将数组转化成json格式。具体为
data: { 'data': JSON.stringify(array_list)}
此种传输后,后端通过request.GET.get("data")方法收到的是一个字符串,此时需要通过json格式转换
import simplejson
str = request.GET.get("data")#返回一个字符串
dic_list = simplejson.loads(str)#解析字符串,返回一个数组
后端传前端
从Django后端传前端需要注意几个问题
如果是list列表,则需要使用JsonResponse返回数据,safe需要设置为false
return JsonResponse( list,safe=False)
如果是从数据库中查询返回的queryset集,则需要序列化后再返回
return JsonResponse( serializers.serialize("json", queryset),safe=False)