def get_data(request):
from django.core import serializers
# 引入serializers, 它只能将django对象序列化
ret = {'status': True, 'data': None}
try:
user_list = model.UserInfo.objects.all()
# 拿到的是对象, Queryset([obj. obj])
ret['data'] = serializers.serialize('json',user_list)
# serialize('json格式',Queyrset对象)
result = json.dumps(ret)
# serializers不能将python类型序列化
return HttpResponse(result)
from django.core import serializers
serializers.serialize()只能将djang对象序列化,
上面objects.all()拿到的时Queryset对象
$.ajax({
url: "",
type: 'GET',
dataType: "JSON",
// 将后端的json字符串转为JS对象,来操作, 上面的datatype将json字符串转为JS对象后,才能.data
success: function (arg) {
var v = JSON.parse(arg.data)
}
})
def get_data(request):
ret = {'status': True, 'data': None}
try:
user_list = model.UserInfo.objects.all().values("id", "username")
# values拿到的是Queryset对象而里面套的是字典
result = json.dumps(ret)
# 可以直接用dumps序列化
return HttpResponse(result)
这里直接.all().valuse() 拿到类似python对象的Queryset, 可以直接序列化
$.ajax({
url: "",
type: 'GET',
dataType: "JSON",
// 一次反序列化就行
success: function (arg) {
}
})
注意:values() 返回字典列表 valuse_list() 返回元组列表
3 JsonResponse
from django.http import JsonRsponse
data = {"name": "aki", "age": 17}
return Jsonreponse(data)
能把字典转换为json格式, 只能是字典格式
JsongResponse(data, safe=False)
加个safe=False, 可以把列表等类型转换为字符串
总的来说django序列化
1) list(Publish.objects.all().values("name", "xx"))
2) model_to_dict
from django.forms.models import model_to_dict
publish_list = Publish.objects.all()
temp = []
for obj in publish_list:
temp.append(model_to_dict)
# 返回一个字典 {'id': 1, 'name': 'xx'}
3) serializers
4)restframework