Django数据序列化
1.Python json模块
介绍Json
Json(Javascript Object Notation,Js对象标记) 是一种轻量级的数据交互格式。
在Python中Json其实就是字典格式
在Python中有专门处理Json的模块,分别是Json和Pickle模块
Json模块提供了四个方法:dumps,dump,loads,load
1531749505531.pngPickle模块也是四个功能: dumps,dump,load,loads
1531749531979.png区别
dumps 只完成了序列化为str
dump 需要传入文件描述符,将序列化的str保存到文件中
1531749598946.png 1531749582234.pngloads 只完成了反序列化
load 需要传入文件描述符,完成了读取文件了反序列化
import json
'''
序列化,dumps
'''
str = 'test'
new_str = json.dumps('test') #dumps可以将所有内容转换成str
print(new_str)
dict = {'a':'1','b':'2'}
new_dict = json.dumps(dict)
print(new_dict)
'''
反序列化,loads
'''
new_str2 = json.loads(new_str)
print(new_str2)
new_dict2 = json.loads(new_dict)
print(new_dict2)
'''
PS C:\Users\Alpaca\Desktop\Django> & python c:/Users/Alpaca/Desktop/Django/__pycache__/jsontest.py
"test"
{"a": "1", "b": "2"}
test
{'a': '1', 'b': '2'}
'''
Pickle和Json模块的区别
Json格式很多编程语言都统一使用,但是Pickle只有Python语言认识,放到其他语言中会出现错误
2.开始序列化
1531751688361.png 1531751713929.png由于这样返回只会让我们看到一串str的内容,无法让我们清楚的看到数据之间的层次和包含关系,因此我们要对这些数据反序列化再输出。
1.将他变成字典的格式(json格式)
2.再使用dumps方法序列化
1531752359758.png 1531752348390.png问题
这样做的会出现很多的错误,并且当字段一旦多的时候,我们就需要一个一个的填充
3.进阶版序列化方法
1531752708988.png使用了django内置的方法
效果一样
问题
当我们字段中有imagefield字段的时候,就会出现不能序列化
1531752801958.png4.再次进阶
1531753012019.png使用django自带的方法,serializer
(如果再后面没有加content_type)返回的内容很杂乱
1531753028162.png使用jsonResponse
为了防止上面的错误,我们可以把httpResponse变成 jsonReponse
1531753360065.png可以看出这个方法里面对data这个数据进行了序列化的操作。为了防止错误,我们需要再之前对数据进行反序列化
1531753604159.png注意,这里还是会出现错误
1531753633185.png他要我们把这个safe字段设置为False
1531753669462.png设置完成
网友评论