1.序列化字段类型合集(CharField可以通用):
#1 BooleanField BooleanField() #2 NullBooleanField NullBooleanField() #3 CharField CharField(max_length=None, min_length=None, allow_blank=False, trim_whitespace=True) #4 EmailField EmailField(max_length=None, min_length=None, allow_blank=False) #5 RegexField RegexField(regex, max_length=None, min_length=None, allow_blank=False) #6 SlugField SlugField(max_length=50, min_length=None, allow_blank=False) 正则字段,验证正则模式 [a-zA-Z0-9-]+ #7 URLField URLField(max_length=200, min_length=None, allow_blank=False) #8 UUIDField UUIDField(format=’hex_verbose’) format: 1) 'hex_verbose' 如"5ce0e9a5-5ffa-654b-cee0-1238041fb31a" 2) 'hex' 如 "5ce0e9a55ffa654bcee01238041fb31a" 3)'int' - 如: "123456789012312313134124512351145145114" 4)'urn' 如: "urn:uuid:5ce0e9a5-5ffa-654b-cee0-1238041fb31a" #9 IPAddressField IPAddressField(protocol=’both’, unpack_ipv4=False, **options) #10 IntegerField IntegerField(max_value=None, min_value=None) #11 FloatField FloatField(max_value=None, min_value=None) #12 DecimalField DecimalField(max_digits, decimal_places, coerce_to_string=None, max_value=None, min_value=None) max_digits: 最多位数 decimal_palces: 小数点位置 #13 DateTimeField DateTimeField(format=api_settings.DATETIME_FORMAT, input_formats=None) #14 DateField DateField(format=api_settings.DATE_FORMAT, input_formats=None) #15 TimeField TimeField(format=api_settings.TIME_FORMAT, input_formats=None) #16 DurationField DurationField() #17 ChoiceField ChoiceField(choices) choices与Django的用法相同 #18 MultipleChoiceField MultipleChoiceField(choices) #19 FileField FileField(max_length=None, allow_empty_file=False, use_url=UPLOADED_FILES_USE_URL) #20 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=) #记住的:CharField IntegerField DecimalField DateTimeField BooleanField ListField DictField
2.常用字段参数:
选项参数:
# 参数的主要作用:主要就是做反序列化校验的,字段自己的规则!!!
# CharField及其子类(比如EmailField等) max_length 最大长度 min_lenght 最小长度 allow_blank 是否允许为空 trim_whitespace 是否截断空白字符 --------------------------------- 例如:
# IntegerField max_value 最小值 min_value 最大值 --------------------------------- # 所有字段类都有的 required 表明该字段在反序列化时必须输入,默认True default 反序列化时使用的默认值 allow_null 表明该字段是否允许传入None,默认False validators 该字段使用的验证器 ----看一眼忘掉----- error_messages 包含错误编号与错误信息的字典 label 用于HTML展示API页面时,显示的字段名称 help_text 用于HTML展示API页面时,显示的字段帮助提示信息 --------------------------------- # 重点: read_only 表明该字段仅用于序列化输出,默认False write_only 表明该字段仅用于反序列化输入,默认False -------------------------------------------- ## 总结:反序列化校验执行流程 -1 先执行字段自己的校验规则----》最大长度,最小长度,是否为空,是否必填... -2 validators=[方法,] ----》单独给这个字段加校验规则 例如这样的 name=serializers.CharField(validators=[方法,]) -3 局部钩子校验规则 -4 全局钩子校验规则
注:全局钩子和局部钩子理解
a.给某个字段再增加校验(固定用法),定义一个方法,格式为 validate_字段名
b.即限制多个字段之间的数据关系,如果写局部钩子不能限制住,因为局部钩子只能拿一条数据即只能限制名字或者只能拿到地址,不能同时拿到名字和地址,所以需要全局钩子(固定写法)定义一个方法validate
2.序列化组件修改数据
3.局部钩子校验
4.全局校验钩子
标签:None,False,max,校验,length,全局,序列化 From: https://www.cnblogs.com/vless/p/17178185.html