序列化器
序列化器作用
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
通俗易懂说法
序列化:将 Django 模型数据转化为 json 格式字符串(前端可接收的数据)。
序列化过程:将Django 模型数据转化为json 格式字符串,使用 JsonResponse 方法进行序列化输出,供前端接收
反序列化:前端传过来的 json 格式数据,转化为 Django 模型类对象
创建接口过程:
1、反序列化过程
2、操作数据库
3、序列化过程
数据库增删改查流程
增:校验请求参数 ---》 反序列化 ---》 保存数据 ---》序列化返回
删:判断要删除的数据是否存在 ---》 执行数据库删除操作
改: 判断要修改的数据是否存在 ---》 校验请求参数 ---》 反序列化 ---》 保存数据 ---》将保存的数据库序列化并返回
查:查询数据库 ---》 将数据序列化返回