django 里的序列化

什么叫序列化:就是把某种存在内存里的东西(对象)转化为能够保存到文件里(硬盘)的东西,这一过程称为序列化

因为前端页面ajax里   succes:function(arg){}中的arg只能接收后端传来的字符串类型

因为后端操作数据库取的是对象话就要进行序列化操作!

不过可以在ajax页面加  dataTyepe:'Json'使字符串变为对象

变成对象就可以通过.来取值进行判断进而进行其他操作

但一定要确保后端传来的数据类型是序列化后的字符串类型,不是字符串类型前端接受不了,没有序列化的话前端页面就要加上序列化操作

首先要导入 

from django.core import serializers

对于  .values() 和.values_list()  只需要加个list就行,而all()要用serializers.serialize()

views下

from django.shortcuts import HttpResponse
from app01 import models
import json
def get_data(request):
    from django.core import serializers
    #先定义一个字典的状态,便于传值和判断
    ret = {'status':True,'data':None}
    try:
        # user_list = models.UserInfo.objects.all()
        # QuerySet【obj,obj,obj】
        # ret['data'] = serializers.serialize("json",user_list)
        #相当于在前端页面
        # // var
        # v = JSON.parse(arg.data);
        # // console.log(v);

        # user_list = models.UserInfo.objects.all().values('id','username')
        # ret['data'] = list(user_list)

        # user_list = models.UserInfo.objects.all().values_list('id', 'username')
        # ret['data'] = list(user_list)
        pass
    except Exception as e:
        ret['status'] = False
    result = json.dumps(ret)
    return HttpResponse(result)

前端:

 <script>
        $(function () {
            initData();
        });
        function initData() {
            $.ajax({
                url :'/get_data/',
                type:'GET',
                dataType:'JSON',
                success:function (arg) {
                    //$('#tb').append(arg);
                    if(arg.status){
                        console.log(arg.data);
                        //如果没有后端序列化的操作的话就得执行
                        //var v = JSON.parse(arg.data);
                        //console.log(v);
                    }
                }
            })
        }
    </script>

猜你喜欢

转载自blog.csdn.net/weixin_42166745/article/details/83690349