本篇文章给大家分享的是有关Python使用序列化器实现一个字段验证及序列化的方法,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
<>强自带验证器
强>
1, UniqueValidator
用于验证(唯一)独特=True的字段,常用参数:
- <李> queryset:要求,用于明确验证唯一性集合,必须设置李> <李>信息:当验证失败时的提示信息
李,>
。验证器进口UniqueValidator 蛞蝓=SlugField ( max_length=100, 验证器=[UniqueValidator (queryset=BlogPost.objects.all ())) )
2, UniqueTogetherValidator
- <李> queryset:要求,用于明确验证唯一性集合,必须设置李> <李>字段:必需的,字段列表或者元组,字段必须是序列化类中存在的字段李> <李>信息:当验证失败时的提示信息李> <>李UniqueTogetherValidator有一个隐性要求就是验证的字段必须要提供值,除非设置了一个默认值李>
。验证器进口UniqueTogetherValidator 类ExampleSerializer (serializers.Serializer): 类元: 验证器=[ UniqueTogetherValidator ( queryset=ToDoItem.objects.all (), 字段=(& # 39;列表# 39;& # 39;位置# 39;) ) )
3,序列化器返回字段定义
#所有字段.attrs是字段验证合法之后返回的总的字典 def验证(自我,attrs): #前端没有传移动值到后端,这里添加进来 attrs [“mobile"]=attrs (“username") #代码是自己添加得,数据库中并没有这个字段,验证完就删除掉 德尔attrs (“code") 返回attrs
4,自定义字段验证格式validate_ 5,验证器 序列化程序上的各个字段可以包含验证程序,通过在字段实例上声明它们 以上就是Python使用序列化器实现一个字段验证及序列化的方法,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。类MobileVerifySerializer (serializers.ModelSerializer):
# CareerUser中没有字的代码段,这里需要自定义一个代码序列化字段
代码=序列化器。CharField (=True, write_only=True, max_length=4, min_length=4,
error_message={
“blank":“请输入验证码“,
“required":“请输入验证码“,
“max_length":“验证码格式错误“,
“min_length":“验证码格式错误”;
},
help_text=把橹ぢ搿?
#验证用户名是否存在
用户名=serializers.CharField(标签=坝没?help_text=坝没?要求=True, allow_blank=False,
验证器=[UniqueValidator (queryset=CareerUser.objects.all(),消息=坝没б丫嬖凇?))
#验证码
def validate_code(自我、代码):
#用户注册,已发布方式提交注册信息,帖子的数据都保存在initial_data里面
#用户名就是用户注册的手机号,验证码按添加时间倒序排序,为了后面验证过期,错误等
verify_records=VerifyCode.objects.filter(移动=self.initial_data [“username"]) .order_by (“-add_time")
如果verify_records:
#最近的一个验证码
last_record=verify_records [0]
#有效期为五分钟。
five_mintes_ago=datetime.now ()——timedelta(=5小时=0,分钟,秒=0)
如果five_mintes_ago比;last_record.add_time:
提高serializers.ValidationError(“验证码过期“)
如果last_record。代码!=代码:
提高serializers.ValidationError(“验证码错误“)
其他:
提高serializers.ValidationError(“验证码错误“)
def multiple_of_ten(价值):
如果值% 10 !=0:
提高serializers.ValidationError(& # 39;不是十的倍数,)
类GameRecord (serializers.Serializer):
分数=IntegerField(验证器=[multiple_of_ten])
…
Python使用序列化器实现一个字段验证及序列化的方法