django之序列化

简介:

  前端,比如VUE,他不认识后端的QUERY SET对象,后端只能转换成字符串才能认识,

  这就需要序列化

Django内置的serializers
# 使用django自带的序列化工具
def persons1(request):
    #获取查询集(query set)
    book_list=Person.objects.all()
    from django.core import serializers
    ret = serializers.serialize("json", book_list)
    return HttpResponse(ret)

说明:

  这里只是提供一个内置的简单序列化工具,

  后面会增加一个功能强大的序列化工具。

 1,导入工具

   from django.core import serializers

  2,序列化成json格式的字符串,此字符串变量名是book_list

ret = serializers.serialize("json", book_list)
在HTML页面上显示的内容如下:
[{"model": "app01.person", "pk": 1, "fields": {"name": "u674eu660e", "age": 22}}, {"model": "app01.person", "pk": 2, "fields": {"name": "u5c0fu7ea2", "age": 33}}, {"model": "app01.person", "pk": 3, "fields": {"name": "u5c0fu660e", "age": 12}}]

 格式化JSON解析内容如下:




以下是手工生成列表,并序列化成字符串

如果是手工传递数据到django服务器,则需要如下步骤,就显得太繁琐了
from app01.models import Person
def persons(request):
    #获取查询集(query set)
    ret=Person.objects.all()
    person_list=[]
    #手工按照我们自定义的格式,生成列表
    for value in ret:
        person_list.append({'name':value.name,'age':value.age})
    print(person_list)
    # 使用json将列表序列化成字符串
    import json
    s=json.dumps(person_list)
    return HttpResponse(s)

 查看生成的字符串s

[{"age": 22, "name": "u674eu660e"}, {"age": 33, "name": "u5c0fu7ea2"}, {"age": 12, "name": "u5c0fu660e"}]

使用json解析器,解析下,查看内容。

 




原文地址:https://www.cnblogs.com/2mei/p/9261507.html