Django的序列化

什麼叫序列化與反序列化

我們把變量從內存中變成可存儲或傳輸的過程稱之爲序列化,在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<Queryset [object,object,object]>這種關於django的Querysetset對象這種是不能用python的json方法,這時候就需要用到django的 serializers
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取到的格式是這種<querytset  [{key:value},{key:value}.......]>    列表裏面的字典類型的格式
values_list 格式是這種<querytset  [(),(),(),()......]>      列表裏面元祖的格式
ret = models.BookType.objects.all().values_list('caption') ret=list(ret) result = json.dumps(ret)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章