序列化和反序列化是什么?代码如何实现

2019-04-24  本文已影响0人  木灵慧

如果前端是GET请求,模型类对象转成字典,返回改前端,这个过程为序列化.

如果前端是POST请求,要对数据库进行改动,先校验,再将数据写入数据库,字典转模型,这个过程称为反序列化.


在REST API的视图,基本上都是对数据库进行增删改查,drf框架把这些重复的增删改查的代码封装成了类视图和序

列化器,简化了重复代码的编写,节省了开发的时间.序列化器有2大作用,一是对数据进行校验,二是对数据进行转换.

代码实现:

如果视图继承的是view的时候:

1.创建serializer对象

1)用于序列化时,将模型类对象传入instance参数,  因为传了instance参数,serializer对象.save()的时候走的就是updatex方法,  查单一,查所有要序列化

2)用于反序列化时,将要被反序列化的数据传入data参数    新增和修改,删除都需要发序列化,is_valid()方法进行验证,如果传了data参数,又instance参数,serializer对象.save()的时候走的serializer里面的update方法,如果传了data参数,没有传instance参数,serializer对象.save()的时候走的serializer里面的create方法


如果类视图继承的是APIView或者它的子类的时候,那我们可以新建一个serializers.py文件,

如果有ORM模型,可以继承ModelSerializer,在元类里面定要自动映射的模型和序列化或者反序列化的字段.

上一篇下一篇

猜你喜欢

热点阅读