4.django返回json格式数

Django数据序列化

1.Python json模块

介绍Json

Json(Javascript Object Notation,Js对象标记) 是一种轻量级的数据交互格式。

在Python中Json其实就是字典格式

在Python中有专门处理Json的模块,分别是Json和Pickle模块

Json模块提供了四个方法:dumps,dump,loads,load

1531749505531.png

Pickle模块也是四个功能: dumps,dump,load,loads

1531749531979.png

区别

dumps 只完成了序列化为str

dump 需要传入文件描述符,将序列化的str保存到文件中

1531749598946.png
1531749582234.png

loads 只完成了反序列化

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.进阶版序列化方法

使用了django内置的方法

1531752708988.png

效果一样

问题

当我们字段中有imagefield字段的时候,就会出现不能序列化

1531752801958.png

4.再次进阶

使用django自带的方法,serializer

1531753012019.png

(如果再后面没有加content_type)返回的内容很杂乱

1531753028162.png

使用jsonResponse

为了防止上面的错误,我们可以把httpResponse变成 jsonReponse

1531753360065.png

可以看出这个方法里面对data这个数据进行了序列化的操作。为了防止错误,我们需要再之前对数据进行反序列化

1531753604159.png

注意,这里还是会出现错误

1531753633185.png

他要我们把这个safe字段设置为False

1531753669462.png

设置完成

你可能感兴趣的:(4.django返回json格式数)