序列化器作用
1、序列化,序列化器会把模型对象转换成字典,经过 response 以后变成 json 字符串,即把数据库的表数据转换成客户端的json 格式并返回
2、反序列化,反序列化器会把客户端发送过来的数据。经过 request 以后变成字典,序列化器可以把字典转成模型
3、反序列化,完成数据校验功能
简单使用
1、写一个序列化的类,继承 serializer
2、在类中写要序列化的字段,想序列化哪个字段,就在类中写哪个字段
3、在视图类中使用,实例化得到序列化类的对象,把需要序列化的对象传入
4、序列化类的对象.data 是一个序列化后的字典
5、把字典返回,如果不使用 rest_framework 提供的 Response,就得使用JsonResponse
使用序列化组件修改数据,即反序列化
1、写一个序列化的类,继承serializer
2、在类中写要反序列化的字段,想反序列化哪个字段,就在类中写哪个字段,字段的属性
3、如果已有的字段的校验规则不符合要求,可以写钩子函数(局部和全部)
局部钩子:函数名的规则为 validate_字段名,接收一个参数
如:
全局钩子:可针对这个序列化器进行全局检验
4、可以使用字段的 pid = serializers.IntergerField(validator=[whether_existed_project_id]) validator来检验写一个函数
validator =【】,列表中写函数内存地址
5、更新数据
6、在视图类中使用,导入,实例化得到序列化类的对象,把实例化的对象传入,修改的数据传入
book = Book.objects.filter( id=pk ).first()
boo_ser = ProjectSerializer( book, request.data ) 即
boo_ser = ProjectSerializer( instance = book, data = request.data )
7、数据检验 :if boo_ser . is_valid()
8、如果检验通过,就保存:boo_ser.save()
9、如果检验不通过,就报异常
10、新增数据
11、删除数据
模型类序列化器
指定模型,针对哪个字段进行反序列化,不需要重新create和update,若反序列化有其它字段,需要重写create和update
1、many=True 的实际用途
序列化多条数据,需要传many=True
标签:ser,data,boo,序列化,数据,字典 From: https://www.cnblogs.com/lili37/p/17703224.html