序列化与反序列化
一般后端数据返回给前端的数据格式都是json
格式,简单易懂,但是我们使用的语言本身并不是json
格式,像我们使用的Python
如果直接返回给前端,前端用的javascript
语言是识别不出的,所以我们需要把python
语言转换为通用的json
格式的数据,在django
中就是将orm
模型或者queryset
对象转换成字典,再由字典转换成json
,整个过程就是序列化。
当用户通过在form
表单中填写的数据,发送请求给后端,将数据提交给后端数据库,这个过程就是反序列化。反序列化的时候,我们需要去验证前端提交的数据是否符合后端制定的规范,符合才进行入库。
drf的序列化类
drf
的序列化类有3个
- Serializer
- ModelSerializer(使用最多的)
- ListSerializer
我们使用最多的就是ModelSerializer
,这三个序列化类都继承自BaseSerializer
,虽然我们项目中99%都是使用的ModelSerializer
,但是光知道怎么使用,是没有灵魂的,我们还需要去了解源码,多看源码能迅速提高代码能力。
BaseSerializer
源码分析
源码如下:
class BaseSerializer(Field):
def __init__(self, instance=None, data=empty, **kwargs):
def __new__(cls, *args, **kwargs)
def __class_