什么叫序列化:就是把某种存在内存里的东西(对象)转化为能够保存到文件里(硬盘)的东西,这一过程称为序列化
因为前端页面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>