python---django中序列化

def get_data(req):
    ret = {'status':True,'data':None}
    try:
        user_list = models.User.objects.all()
        ret['data']=user_list
        #TypeError at /get_data.html
        #<QuerySet [<User: dwafwaa>, <User: fwaf>, <User: faw>, <User: fwafwa>]> is not JSON serializable
     #json只能序列化基本数据类型,对于对象是不能进行序列化,需要我们使用serializers.serialize except Exception
as e: ret['status']=False result = serializers.serialize("json",ret) #typeError: 'module' object is not callable #serializers只能对queryset进行序列化
  #这里中ret含有基本数据类型,serializers.serialize不能进行序列化
return HttpResponse(result)

正确使用:

def get_data(req):
    ret = {'status':True,'data':None}
    try:
        user_list = models.User.objects.all()
        ret['data']=serializers.serialize("json",user_list)
        #TypeError at /get_data.html
        #<QuerySet [<User: dwafwaa>, <User: fwaf>, <User: faw>, <User: fwafwa>]> is not JSON serializable


        #去数据库中取数据时,有格式queryset
        #其中可以是对象,列表,字典,在外面包着[]列表
        #对于对象的序列化,需要我们使用serializers.serialize("json",user_list)进行处理
        #对于其他基本类型我们只需要稍微进行转换即可,直接转换为列表(由queryset)list(user_list)即可
        #在前端获取的数据就不需要在进行一次反序列化了(对于serialize,我们需要进行一次反序列化,这里没有使用serialize,所以不需要转义)


    except Exception as e:
        ret['status']=False
    result = json.dumps(ret)
    return HttpResponse(result)

前端使用:

    function initData(){
        $.ajax({
            url:"/get_data.html",
            type:"get",
            dataType:"json",
            success:function(data){
                if(data.status){
                    console.log(data.data)
                    var v = JSON.parse(data.data);  #对于我们获取的data.data对应上面serializers.serialize序列化的数据,又被json序列化,所以我们还需要再进行JSON.parse再获取一次
                    console.log(v)
                }
            }
        })
    }

 

posted @ 2018-04-01 00:00  山上有风景  阅读(630)  评论(0编辑  收藏  举报