"""图书数据序列化器"""
model 指明该序列化器处理的数据字段从模型类BookInfo参考生成
fields 指明该序列化器包含模型类中的哪些字段'__all__'指明包含所有字段
queryset 指明该视图集在查询数据时使用的查询集
serializer_class 指明该视图在进行序列化或反序列化时使用的序列化器
1.2 为模型类提供一个序列化器(写法一):
"""图书数据序列化器"""
1.2.1为模型类提供一个序列化器(写法二):
"""图书数据序列化器"""
序列化时,将模型类对象传入instance参数
用于反序列化时将要被反序列化的数据传入data参数
1.4.3 获取序列化数據通过data属性可以获取序列化后的数据
1.4.4 如果要被序列化的是包含多条数据的查询集QuerySet,可以通过添加many=True参数补充说明
在获取反序列化的数据前必须调用is_valid()方法进行验证,验证成功返回True否则返回False。
验证成功可以通过序列化器对象的validated_data属性获取数据。
验证失败可以通过序列化器对潒的errors属性获取错误信息,返回字典包含了字段和字段的错误。如果是非字段错误可以通过修改REST framework配置中的NON_FIELD_ERRORS_KEY来控制错误字典中的键名。
"""图書数据序列化器"""
通过构造序列化器对象并将要反序列化的数据传递给data构造参数,进而进行验证
"""图书数据序列化器"""
2)validate在序列化器中需要同時对多个字段进行比较验证时可以定义validate方法来验证,如
"""图书数据序列化器"""
3)validators在字段中添加validators选项参数也可以补充验证行为,如
"""图书数据序列化器"""
验证成功后如果需要在返回数据对象的时候,也将数据保存到数据库中则可以进行如下修改
"""图书数据序列化器"""
实现了上述两個方法后,在反序列化数据的时候就可以通过save()方法返回一个数据对象实例了
如果创建序列化器对象的时候,没有传递instance实例则调用save()方法嘚时候,create()被调用相反,如果传递了instance实例则调用save()方法的时候,update()被调用
"""图书数据序列化器"""
- model 指明参照哪个模型类
- fields 指明为模型类的哪些字段生成
"""图书数据序列化器"""
- 包含了解析之后的文件和非文件数据
- 包含了对POST、PUT、PATCH请求方式解析后的数据
REST framework提供了一個响应类Response
,使用该类构造响应对象时响应的具体数据内容会被转换(render渲染)成符合前端需求的类型。
REST framework提供了Renderer
渲染器用来根据请求头中嘚Accept
(接收数据类型声明)来自动转换响应数据到对应格式。如果前端请求中未进行Accept声明则会采用默认方式处理响应数据,我们可以通过配置来修改默认响应格式
-
data
: 为响应准备的序列化处理后的数据;
-
headers
: 用于存放响应头信息的字典;
传给response对象的序列化后,但尚未render处理的数据
经過render处理后的响应数据
在APIView
中仍以常规的类视图定义方法来实现get() 、post() 或者其他请求方式的方法
get_object(self) 返回详情视图所需的模型类数据对象,默认使用lookup_field
参数来过滤queryset 在试图中可以调用该方法获取详情信息的模型类对象。