首页 > 其他分享 >反序列化_保存和局部校验、全局校验

反序列化_保存和局部校验、全局校验

时间:2023-03-04 13:56:09浏览次数:44  
标签:None False max 校验 length 全局 序列化

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

相关文章

  • 序列化器的使用
    1.url.py路由配置:注意使用有名分组‘(?P<pk>\d+)’  2.models.py建表:  3.ser.py序列化表字段:  4.views.py中查询格式及序列化如何返回数据: ......
  • 外观数列(字符串)、用队列实现栈、二叉树的序列化与反序列化(树、深度优先搜索)
    外观数列(字符串)给定一个正整数n,输出外观数列的第n项。「外观数列」是一个整数序列,从数字1开始,序列中的每一项都是对前一项的描述。你可以将其视作是由递归公式定......
  • 【前端开发】一个滑动滑块校验登录的组件思路(用vue写的)
    <template><el-dialog:visible.sync="dialogVisible"custom-class="slideVerifyDialog":close-on-click-modal="false"title="身份验证"widt......
  • protobuf golang&&python序列化反序列化测试
    1.概要最近考虑采用protobuf来实现kafka消息传递,所以先测试一下golang和python之前序列化互通问题。由于go和python对于二进制的表示在ide层面是无法统一的,直接把python......
  • 成品直播源码,Flutter 夜间模式 全局字体
    成品直播源码,Flutter夜间模式全局字体 import'package:flutter/material.dart';import'package:flutter_widget/router/applicationRouterGradual.dart';import'pa......
  • eas里客户端保存,提交的校验方式
    业务单据、基础资料,在编辑界面EditUI中进行必录校验时,可以直接从界面绑定的数据对象editData中获取值,无需通过界面控件取值。对于单据头中的属性值,通过editData可以直接通......
  • Redis 实现唯一全局ID
      packagecom.hmdp.utils;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.data.redis.core.StringRedisTemplate;......
  • 全局视角看技术-Java多线程演进史
    作者:京东科技文涛全文较长共6468字,语言通俗易懂,是一篇具有大纲性质的关于多线程的梳理,作者从历史演进的角度讲了多线程相关知识体系,让你知其然知其所以然。前言2022......
  • 校验和算法 rd16
    randdigest16bitconstmodulus16=256*256;constrd16=t=>{letbuf=Buffer.isBuffer(t)?t:Buffer.from(t);letp=Math.floor(buf.length/......
  • day81- 全局事件总线
    全局事件总线在组件间通信的一种方式,适用于任意组件通信之前实现的是父子组件的通信,如果兄弟组件想要相互传递消息就需要先向app组件传信息,app设置回调再往兄弟组件中传......