django框架的基础知识点《伍》
=================反序列化操作=====================
反序列化:将接收到的字典转换成模型类的对象
分为两步:1.验证,2.保存
--------》验证:验证的方式;
1.类型+选项
2.validate_属性名称(self,value)===》验证指定的属性是否合法
3.validate(self,values)========》验证多个属性是否合法
4.validators=【方法】===========》针对属性进行验证
调用:
serializer = 模型类Serializer(data=字典)
serializer.is_valid()===>进行验证,如果成功则返回True,反之则返false
serializer.error======>错误信息,类型为字典
保存:
1.定义序列化器,增加create(),update()方法
2.调用:serializer.save()
** 说明:
如果是创建,序列化器类(data=***)===》serializer.save()===>调用create()
如果是修改:序列化器类(模型类对象,data=***)===》serializer.save()调用update()
如果是部分修改:序列化器(模型类对象,data=***,partial=True)==》 serializer.save()===>调用update()
========================模型类序列化器=================
父类:serializers.ModelSerializer
定义关系属性或隐藏关系属性
class Meta:
model= 模型类
fields=‘__all__'(包含全部)
fields=[] (包含指定字段)
exclude=【】(排除满足条件的字段)
extra_kwargs={约束}
# depth=1设置关系属性的显示方式
import random
** 说明:不需要定义create(),update()方法,因为父类中已经定义好了
=====================序列化器类型的选择==============
序列化器的选择:
不存在模型类,只使用部分功能
模型类序列化器的选择:
存在模型类
===================DRF中的request对象===================
.data======>接收请求报文体中的数据dict
.query_params===>请求查询字符串dict
=================DRF中的response对象=================
Response(字典,status=状态码)==》200(查询,增加),201(修改),204()删除
======================APIView==================
对于数据库的操作:
查询所有===============》list,创建=================》create
查询一个===============》retrieve,修改==============》update
删除==================》删除