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>

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值