什么叫序列化与反序列化
我们把变量从内存中变成可存储或传输的过程称之为序列化,在Python中叫pickling,在其他语言中也被称之为serialization,marshalling,flattening等等,都是一个意思。
序列化之后,就可以把序列化后的内容写入磁盘,或者通过网络传输到别的机器上。
反过来,把变量内容从序列化的对象重新读到内存里称之为反序列化,即unpickling。
Django支持的序列化格式
Identifier Information
xml Serializes to and from a simple XML dialect.
json Serializes to and from JSON.
yaml Serializes to YAML (YAML Ain’t a Markup Language). This serializer is only available if PyYAML is installed.
这里只介绍关于json的django的序列化格式
Django的序列化
对于Django的Queryset
Django序列化对象使用serializers:
from django.core import serializers
data = serializers.serialize("序列化格式",QuerySet )
传递给 serialize 方法的参数有二:一个序列化目标格式,另外一个是序列号的对象QuerySet. (事实上,第二个参数可以是任何可迭代的Django Model实例,但它很多情况下就是一个QuerySet).
例如:
from django.core import serializers
ret = models.BookType.objects.all()
data = serializers.serialize("json", ret)
python基本类型的序列化
关于python一些内置一些类型(例如:字典,列表,元祖。。。)的序列化,就用json 就可以了
只要不是关于django对象的序列化,就用json.dumps
例如:
import json
#ret1 = models.BookType.objects.all().values('caption')
#ret1['列名'] = list(ret1)
提示:.
values取到的格式是这种 列表里面的字典类型的格式
values_list 格式是这种 列表里面元祖的格式
ret = models.BookType.objects.all().values_list('caption') ret=list(ret) result = json.dumps(ret)