常用字段类型
字段 | 字段构造方式 | 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(max_length=50,,min_length=None,allow_blank=False)? | URLField | URLField(max_length=None,min_length=None,allow_blank=False) | UUIDField | UUIDField(format='hex_verbose') | IPAddressField | IPAddressField(protocol='both',unpack_ipv4=False,**options) | IntegerField | IntegerField(max_length=None,min_length=None) | FloatField | FloatField(max_length=None,min_length=None) | DecimalField | DecimalField(max_digits,decinal_places,coerce_to_string=None,max_length=None,min_length=None) max_digits:最多位数; decinal_places:小数点位置 | DateTimeField | DateTimeField(format=api_settings.DATETIME_FORMAT,input_formats=None) | DateField | DateField(format=api_settings.DATETIME_FORMAT,input_formats=None) | TimeField | TimeField(format=api_settings.DATETIME_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_URL) | ImageField | ImageField(max_length=None,allow_empty_file=False,use_url=UPLOADED_FILES_URL) | ListField | ListField(child=,max_length=None,min_length=None) DictField DictField(child=) | | | | |
选项参数
参数名称 | 作用 | max_length | 最大长度 | min_length | 最小长度 | allow_blank | 是否允许为空 | trim_whitespace | 是否截断空白字符 | max_value | 最大值 | min_value | 最大值 |
通用参数
参数名称 | 说明 | read_only | 表明该字段仅用于序列化输出,默认为False | write_only | 表明该字段仅用于反序列化输入,默认为False | required | 表明该字段在反序列化时必须输入,默认为True | default | 反序列化时使用的默认值 | allow_null | 表明该字段是否允许传入None,默认False | validators | 该字段使用的验证器 | error_message | 包含错误编号与错误信息的字典 | label | 用于HTML展示API页面时,显示的字段名称 | help_text | 用于HTML展示API页面时,显示的字段帮助提示信息 |
示例:(seralizers.py)
from rest_framework import serializers
class Student2Serializer(serializers.Serializer):
# 客户端字段 = serializers.字段类型(选项=选项值,)
id = serializers.IntegerField(read_only=True) # read_only=True,在客户端提交数据(反序列化阶段不会要求id字段)
name = serializers.CharField(required=True) # required=True,反序列化阶段必填
sex = serializers.BooleanField(default=True) # default=True,反序列化阶段,客户没有提交,则默认为True
age = serializers.IntegerField(max_value=100,min_value=0) # age在反序列化必须是0<=age<=100
description = serializers.CharField(allow_null=True,allow_blank=True) # 允许客户端不填写内容,或者值为""
|