Python使用序列化器实现一个字段验证及序列化的方法

  介绍

本篇文章给大家分享的是有关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_

类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(“验证码错误“)

5,验证器

序列化程序上的各个字段可以包含验证程序,通过在字段实例上声明它们

 def multiple_of_ten(价值):
  如果值% 10 !=0:
  提高serializers.ValidationError(& # 39;不是十的倍数,)
  
  类GameRecord (serializers.Serializer):
  分数=IntegerField(验证器=[multiple_of_ten])
  …

以上就是Python使用序列化器实现一个字段验证及序列化的方法,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。

Python使用序列化器实现一个字段验证及序列化的方法