django中序列化、反序列化过程(补充)

在人生的道路上,不管是潇洒走一回,或者是千山独行,皆须是自己想走的路,虽然,有的人并不是很快就能找到自己的方向和道路,不过,只要坚持到底,我相信,就一定可以找到自己的路,只要找到路,就不必怕路途遥远了。

导读:本篇文章讲解 django中序列化、反序列化过程(补充),希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

一、定义序列化器
a、如果需要使用DRF框架来实现序列化、反序列化、数据库操作,在子应用中创建serializers.py文件
b、文件名推荐命名为serializers.py
在这里插入图片描述
在serializer.py文件中定义序列化器类
在这里插入图片描述
二、定义序列化器类规则说明
1、必须继承Serializer类或者Serializer子类
2、定义的序列化器类中,字段名要与模型类中的字段名保持一致
3、定义的序列化器类的字段(类属性)为Field子类
4、默认定义哪些字段,那么哪些字段就会返回前端;同时也必须得输入(前端需要传递)
5、常用的序列化器字段类型:
IntegerField-》int
CharField-》str
BooleanField-》bool
DateTimeField-》datetime
6、id中的参数:min_value=1,max_value=1000:表示限制id最小值不能小于1,,最 大值id不能大于1000
7、可以在序列化器中指定不同的选项
label和help_text,与模型类中的verbose_name和help_text参数一样
IntegerField,可以使用max_value指定指定最大值,min_value指定最小值
CharField,可以使用max_length指定最大长度,min_length指定最小值
7、定义的序列化器字段中,required默认为True,说明默认定义的字段得必须输入和输出
8、如果在序列化器字段中,设置required=False,那么前端用户可以不传递该字段
(校验时会忽略该字段)所以不会报错
9、如果未定义模型类中的某个字段,那么该字段不会输入也不会输出
10、需求:前端必须得输入(反序列化输入)name(必须得校验),但是不会需要输出(序列化输出)
如果某个参数指定了write_only=True:那么该字段仅仅只输入(反序列化输入,做数据校验),
不会输出(序列化输出),默认为write_only=False
11、前端可以不用传递,但是后端需要输出?
如果某个参数指定了read_only=True:那么该字段仅仅只输出(序列化输出),
不会输入(反序列化输入,做数据校验),默认为read_only=False
name必传参数不能设置read_only=True
12、在序列化器类中定义的字段,默认allow_null=False,该字段不允许传递空值,
如果指定allow_null=True,那么该字段允许传递null
13、在序列化器类中定义CharField字段,默认allow_blank=False,该字段不允许为空字符串,
如果指定allow_blank=True,那么该字段允许传递空字符串
14、在序列化器类中定义的字段,可以使用default参数来指定默认值,如果指定了default参数,那么用户可以不用传递,会将default指定的值作为传入参数。
三、引用序列化器
1、可以使用序列化器进行序列化输出操作
a、创建序列化器类对象
b、可以将模型对象或者查询集对象、普通对象、嵌套普通对象的列表,以instance关键字来传递参数
c、如果传递的是查询集对象、嵌套普通对象的列表(多条数据),必须得设置many=True

在这里插入图片描述
d、如果传递的是模型对象,普通对象,不需要设置many=True
在这里插入图片描述
e、可以使用序列化器对象的.data属性,获取序列化器之后的数据(字典、嵌套字典的列表)
在这里插入图片描述

在这里插入图片描述
2、创建数据
在这里插入图片描述
3、获取详细数据
在这里插入图片描述
4、更新数据
在这里插入图片描述
5、删除数据
不涉及序列化输出操作
在这里插入图片描述
四、应用反序列化器

1、定义序列化器类,使用data关键字参数传递字典参数
在这里插入图片描述
2、可以使用序列化器对象调用.is_valid()方法,才会开始对前端输入的参数进行校验
在这里插入图片描述
3、如果校验通过.is_valid()返回True,否则返回False
在这里插入图片描述

4、如果调用.is_valid()方法,添加raise_exception=True,校验不通过会抛出异常,否则不会抛出异常
5、只有在调用.id_valid()方法之后,才可以使用序列化器对象调用.errors属性,来获取错误的提示信息(字典类型)
6、只有在调用.is_valid()方法之后,才可以使用序列化器对象调用.validated_data属性,来获取校验通过之后的数据,与json.loads转化之后的数据有区别

1、创建数据
在这里插入图片描述
2、更新数据
在这里插入图片描述

3、删除一条项目数据
4、获取一条项目数据(获取详情数据)
5、获取所有项目数据(获取列表数据)不涉及反序列化输入操作

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由半码博客整理,本文链接:https://www.bmabk.com/index.php/post/123648.html

(1)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
半码博客——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!