序列化(js, python,django,ajax,JsonResponse)

系统 271 0

一 . JS和python的序列化

序列化(js, python,django,ajax,JsonResponse)_第1张图片

 python的序列化

  1. json字符串 = json.dumps('python对象')
  2. python对象 = json.loads('json字符串')

JS的序列化

  1. js对象 = JSON.parse('字符串')
  2. json字符串 = JSON.stringfy('js对象')

二. Django和ajax序列化

django序列化

1.两次序列化

            
              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

            
                  $.ajax({
        url: "",
        type: 'GET',
        dataType: "JSON",
        // 将后端的json字符串转为JS对象,来操作, 上面的datatype将json字符串转为JS对象后,才能.data
        success: function (arg) {
            var v = JSON.parse(arg.data)
        }
    })
            
          

 

2.

            
              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

 

 

 

 

 

 

 

 

 

 

 

 

 


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请请扫描上面二维码支持博主1元、2元、5元等您想捐的金额吧,狠狠点击下面给点支持吧

发表我的评论
最新评论 总共0条评论