本文实例讲述了Django框架序列化与反序列化操作。分享给大家供大家参考,具体如下:
1.定义:
Django REST
framework中的Serializer使用类来定义,须继承rest_framework.serializers.Serializer。
例:
class BookInfoSerializer(serializers.Serializer):
"""图书数据序列化器"""
id = serializers.IntegerField(label='ID', read_only=True)
name = serializers.CharField(label='名称', max_length=20)
pub_date = serializers.DateField(label='发布日期', required=False)
readcount = serializers.IntegerField(label='阅读量', required=False)
commentcount = serializers.IntegerField(label='评论量', required=False)
image = serializers.ImageField(label='图片', required=False)
2.字段与选项:
常用字段类型:
字段 | 字段构造方式 |
---|---|
BooleanField | BooleanField() |
NullBooleanField | NullBooleanField() |
CharField | CharField(max_length=None, min_length=None, allow_blank=False, |
trim_whitespace=True)
EmailField | EmailField(max_length=None, min_length=None, allow_blank=False)
RegexField | RegexField(regex, max_length=None, min_length=None,
allow_blank=False)
SlugField | SlugField(maxlength=50, min_length=None, allow_blank=False)
正则字段,验证正则模式 [a-zA-Z0-9-]+
URLField | URLField(max_length=200, min_length=None, allow_blank=False)
UUIDField | UUIDField(format=‘hex_verbose’) format: 1)
IPAddressField | IPAddressField(protocol=‘both’, unpack_ipv4=False,
**options)
IntegerField | IntegerField(max_value=None, min_value=None)
FloatField | FloatField(max_value=None, min_value=None)
DecimalField | DecimalField(max_digits, decimal_places,
coerce_to_string=None, max_value=None, min_value=None) max_digits: 最多位数
decimal_palces: 小数点位置
DateTimeField | DateTimeField(format=api_settings.DATETIME_FORMAT,
input_formats=None)
DateField | DateField(format=api_settings.DATE_FORMAT, input_formats=None)
TimeField | TimeField(format=api_settings.TIME_FORMAT, input_formats=None)
DurationField | DurationField()
ChoiceField | ChoiceField(choices) choices与Django的用法相同
MultipleChoiceField | MultipleChoiceField(choices)
FileField | FileField(max_length=None, allow_empty_file=False,
use_url=UPLOADED_FILES_USE_URL)
ImageField | ImageField(max_length=None, allow_empty_file=False,
use_url=UPLOADED_FILES_USE_URL)
ListField | ListField(child=, min_length=None, max_length=None)
DictField | DictField(child=)
选项参数:
参数名称 | 作用 |
---|---|
max_length | 最大长度 |
min_lenght | 最小长度 |
allow_blank | 是否允许为空 |
trim_whitespace | 是否截断空白字符 |
max_value | 最大值 |
min_value | 最小值 |
通用参数:
参数名称 | 说明 |
---|---|
read_only | 表明该字段仅用于序列化输出,默认False |
write_only | 表明该字段仅用于反序列化输入,默认False |
required | 表明该字段在反序列化时必须输入,默认True |
default | 反序列化时使用的默认值 |
allow_null | 表明该字段是否允许传入Noneÿ |