Serializer序列化
2022/6/15 23:24:28
本文主要是介绍Serializer序列化,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
目录- 序列化类Serializer的使用
- 序列化类常用字段和字段参数
- 常见字段
- 常见字段参数
序列化类Serializer的使用
serializers序列化组件:
- 序列化过程:可以把我们用ORM产生的QuerySet对象转换成json格式数据;
- 反序列化过程:可以实现数据校验功能,并把客户端发送过来的数据(前端json格式字符串),经过request.data以后变成字典,再把字典转成模型,存到数据库;
简单使用
模型层:
class Book(models.Model): name = models.CharField(max_length=32) price = models.IntegerField()
创建序列化类:不想序列化的字段不写就行,建议新建py文件专门存放序列化类。
from rest_framework import serializers class BookSerializer(serializers.Serializer): name = serializers.CharField() # 与模型层字段类型对应 price = serializers.IntegerField() # 与模型层字段类型对应
视图层:
class BookAPIView(APIView): def get(self, request): # 取出所有图书的queryset对象 books = models.Book.objects.all() # instance:要序列化的对象 # many:是否有多条数据,只有一条数据就不用传many参数 ser = serializer.BookSerializer(instance=books, many=True) # 序列化后的数据 print(ser.data) return Response(ser.data)
序列化类常用字段和字段参数
常见字段
跟模型层的字段一样,但比模型层的字段多几个:
BooleanField() NullBooleanField() CharField() EmailField() RegexField() SlugField() URLField() UUIDField() IPAddressField() IntegerField() FloatField() DecimalField() DateTimeField() DateField() TimeField() ChoiceField() FileField() ImageField()
serializer独有字段:
ListField() DictField()
常见字段参数
serializer中的字段参数是用来反序列化时校验用的。
CharField()
参数 | 作用 |
---|---|
max_length | 最大长度 |
min_lenght | 最小长度 |
allow_blank | 是否允许为空 |
trim_whitespace | 是否截断空白字符 |
IntegerField()
参数 | 作用 |
---|---|
max_value | 最小值 |
min_value | 最大值 |
通用参数
参数 | 作用 |
---|---|
read_only | 表明该字段仅用于序列化输出,默认False |
write_only | 表明该字段仅用于反序列化输入,默认False |
required | 表明该字段在反序列化时必须输入,默认True |
default | 反序列化时使用的默认值 |
allow_null | 表明该字段是否允许传入None,默认False |
error_messages | 包含错误编号与错误信息的字典 |
这篇关于Serializer序列化的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-26大厂数据结构与算法教程:入门级详解
- 2024-12-26大厂算法与数据结构教程:新手入门指南
- 2024-12-26Python编程入门指南
- 2024-12-26数据结构高级教程:新手入门及初级提升指南
- 2024-12-26并查集入门教程:从零开始学会并查集
- 2024-12-26大厂数据结构与算法入门指南
- 2024-12-26大厂算法与数据结构入门教程
- 2024-12-26二叉树入门教程:轻松掌握基础概念与操作
- 2024-12-26初学者指南:轻松掌握链表
- 2024-12-26平衡树入门教程:轻松理解与应用