数据校验

DRF单表序列化

风流意气都作罢 提交于 2019-12-05 03:08:24
DRF单表序列化 ​ 后台的数据多以后台类的对象存在,经过序列化后,就可以格式化成能返回给前台的数据。 ​ 定义一个全局models: ​ models.py: from django.db import models class User(models.Model): CHOICES_SEX = ((0, '男'), (1, '女')) name = models.CharField(max_length=64) age = models.IntegerField(default=0) height = models.DecimalField(max_digits=5, decimal_places=2, default=0) icon = models.ImageField(upload_to='icon', default='default.png') sex = models.IntegerField(choice=CHOICE_SEX, default=0) # 若以迁移数据库后新增自选,需要允许为空,或者设置默认值,假定pwd为新增字段 pwd = models.CharField(max_length=64, null=Ture) # 自定义插拔序列化字段:替换了在Serializer类中自定义的序列化字段(SerializerMethodField) #

理解cookie,session,token

喜夏-厌秋 提交于 2019-12-05 02:24:21
彻底理解cookie,session,token 发展史 1、很久很久以前,Web 基本上就是文档的浏览而已, 既然是浏览,作为服务器, 不需要记录谁在某一段时间里都浏览了什么文档,每次请求都是一个新的HTTP协议, 就是请求加响应, 尤其是我不用记住是谁刚刚发了HTTP请求, 每个请求对我来说都是全新的。这段时间很嗨皮 2、但是随着交互式Web应用的兴起,像在线购物网站,需要登录的网站等等,马上就面临一个问题,那就是要管理会话,必须记住哪些人登录系统, 哪些人往自己的购物车中放商品, 也就是说我必须把每个人区分开,这就是一个不小的挑战,因为HTTP请求是无状态的,所以想出的办法就是给大家发一个会话标识(session id), 说白了就是一个随机的字串,每个人收到的都不一样, 每次大家向我发起HTTP请求的时候,把这个字符串给一并捎过来, 这样我就能区分开谁是谁了 3、这样大家很嗨皮了,可是服务器就不嗨皮了,每个人只需要保存自己的session id,而服务器要保存所有人的session id ! 如果访问服务器多了, 就得由成千上万,甚至几十万个。 这对服务器说是一个巨大的开销 , 严重的限制了服务器扩展能力, 比如说我用两个机器组成了一个集群, 小F通过机器A登录了系统, 那session id会保存在机器A上, 假设小F的下一次请求被转发到机器B怎么办? 机器B可没有小F的

Windows下MD5校验

…衆ロ難τιáo~ 提交于 2019-12-05 02:09:12
参考博客: https://www.cnblogs.com/liubinghong/p/9299276.html 参考博客: https://www.jianshu.com/p/1e1d56552e03 MD5 校验和 (checksum)通过对接收的传输数据执行散列运算来检查数据的正确性。 一个散列函数,比如 MD5,是一个将任意长度的数据字符串转化成短的固定长度的值的单向操作。任意两个字符串不应有相同的散列值(即,有“很大可能”是不一样的,并且要人为地创造出来两个散列值相同的字符串应该是困难的)。 一个 MD5 校验和 (checksum)通过对接收的传输数据执行散列运算来检查数据的正确性。计算出的散列值拿来和随数据传输的散列值比较。如果两个值相同,说明传输的数据完整无误、没有被窜改过(前提是散列值没有被窜改),从而可以放心使用。 MD5校验可以应用在多个领域,比如说机密资料的检验,下载文件的检验, 明文密码 的加密等。 对文件做MD5校验 Windows支持对文件做各种算法的校验。支持的算法有:MD2 MD4 MD5 SHA1 SHA256 SHA384 SHA512; 使用WIN+R快捷键打开cmd命令窗口,使用CertUtil -hashfile [文件路径] [算法],即可对文件做相应的md5校验。 有时候因为某些原因我们需要查看文件的MD5值

web接口参数校验神器-json schema 快速入门

旧时模样 提交于 2019-12-04 22:00:46
Json Schema 快速入门 JSON 模式是一种基于 JSON 格式定义 JSON 数据结构的规范。它被写在 IETF 草案下并于 2011 年到期。JSON 模式: 描述现有数据格式。 干净的人类和机器可读的文档。 完整的结构验证,有利于自动化测试。 完整的结构验证,可用于验证客户端提交的数据。 Json schema 格式 Json schema 本身遵循Json规范,本身就是一个Json字符串,先来看一个例子 { "$schema": "http://json-schema.org/draft-04/schema#", "title": "Product", "description": "A product from Acme's catalog", "type": "object", "properties": { "id": { "description": "The unique identifier for a product", "type": "integer" }, "name": { "description": "Name of the product", "type": "string" }, "price": { "type": "number", "minimum": 0, "exclusiveMinimum": true } },

form

二次信任 提交于 2019-12-04 21:36:37
form组件 [img](file:///C:\Users\Lenovo\AppData\Roaming\Tencent\QQTempSys%W@GJ$ACOF(TYDYECOKVDYB.png)https://www.cnblogs.com/maple-shaw/articles/9537309.html 一、form组件的主要功能: 生成页面的HTML标签及样式 对用户提交的数据进行校验 自动生成错误信息 保留上次输入信息 二、使用form组件实现注册功能 1、在Django项目下创建一个文件夹,在文件夹中创建一个朋友文件,名字随便起,之后在py文件中写一个RegisterForm类: from django import forms from django.core.validators import RegexValidator from django.core.exceptions import ValidationError class RegisterForm(forms.Form):#类必须继承forms.Form # 用户名 username = forms.CharField( min_length=6,#设置最小长度 max_length=12,#设置最大长度 label="用户名",#设置标签名 #错误信息提示设置 error_messages={ "min

C\\C++串口通信编程的一点技术记录

最后都变了- 提交于 2019-12-04 20:01:18
新工作接的第一个活,要写一个配合设备调试的上位机程序。 除了MFC界面的部分,就是要处理几条命令。 串口通信部分代码借鉴的是这一篇文章:http://blog.sina.com.cn/s/blog_afb1793101016mq2.html https://blog.csdn.net/qq_41480046/article/details/82220155 里面代码很好理解,对于串口的连接设置,有那么几个固定的函数,之后串口的打开和读写,就是用CreateFileA、ReadFile、WriteFile这样的几个函数,将串口当做文件来操作 另外就是用了临界区来实现同步操作, 比较精妙的是串口的读线程,在循环里首先判断串口缓冲区里是否有内容,如果有再去真正读串口 我这里记录在这篇文章代码之外,自己实践之后新获得的一些心得: 1,DCB的EVEN方式的初始化写法 DCB是一个结构体,在调用SetCommState函数时作为参数传入,这是串口初始化的通用写法,不赘述 关键是初始化时的一些设置 如果设备端用了校验位,上位机这边没有用,那么设备可以连接,但收发信息是出错的 所以,初始化时候要设置校验位的使用 校验方式有以下几种: 无校验 (no parity) 奇校验 (odd parity):如果字符数据位中"1"的数目是偶数,校验位为"1",如果"1"的数目是奇数,校验位应为"0"。

jwt揭秘(含源码示例)

你离开我真会死。 提交于 2019-12-04 11:50:48
JSON Web Tokens,是一种开发的行业标准 RFC 7519 ,用于安全的表示双方之间的声明。目前,jwt广泛应用在系统的用户认证方面,特别是现在前后端分离项目。 1. jwt认证流程 在项目开发中,一般会按照上图所示的过程进行认证,即:用户登录成功之后,服务端给用户浏览器返回一个token,以后用户浏览器要携带token再去向服务端发送请求,服务端校验token的合法性,合法则给用户看数据,否则,返回一些错误信息。 传统token方式和jwt在认证方面有什么差异? 传统token方式 用户登录成功后,服务端生成一个随机token给用户,并且在服务端(数据库或缓存)中保存一份token,以后用户再来访问时需携带token,服务端接收到token之后,去数据库或缓存中进行校验token的是否超时、是否合法。 jwt方式 用户登录成功后,服务端通过jwt生成一个随机token给用户(服务端无需保留token),以后用户再来访问时需携带token,服务端接收到token之后,通过jwt对token进行校验是否超时、是否合法。 2. jwt创建token 2.1 原理 jwt的生成token格式如下,即:由 . 连接的三段字符串组成。 ? 1 eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9

SpringMVC数据校验

半腔热情 提交于 2019-12-04 10:21:44
SpringMVC的数据校验   一、 注解方式           二、 示例 Spring MVC本身没有数据校验的功能,它使用Hibernate的校验框架来完成。 1.导入pom节点 <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-validator --> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> <version>5.4.1.Final</version> </dependency> 2.编辑UserInfo实体类 public class UserInfo { @NotNu1l(message="编号不能为空") private Integer user_ id; @NotNull @Length(min = 2,max = 8,message = "用户名不能少于2位大于8位" ) private String user. name; @Email(message = "邮箱格式不正确") private String user. email; @Pattern(regexp = "" ,message = "手机号格式不正切") private

spring boot---hibernate-validator

浪尽此生 提交于 2019-12-04 00:14:37
如何检测调用接口实数据是否符合规范呢,你可以使用 hibernate-validator 使用步骤: 1.pom.xml文件中注入以下依赖: <!--Hibernate validator --> < dependency > < groupId > org.hibernate </ groupId > < artifactId > hibernate-validator </ artifactId > < version > 5.4.1.Final </ version > </ dependency > 2.在需要检验的实体类中添加相关注解,以下为常用注解 @AssertFalse 校验false @AssertTrue 校验true @DecimalMax(value=,inclusive=) 小于等于value, inclusive=true,是小于等于 @DecimalMin(value=,inclusive=) 与上类似 @Max(value=) 小于等于value @Min(value=) 大于等于value @NotNull 检查Null @Past 检查日期 @Pattern(regex=,flag=) 正则 @Size(min=, max=) 字符串,集合,map限制大小 @Valid 对po实体类进行校验 具体使用如: public class XuUser

Spring/Spring boot JSR-303验证框架 之 hibernate-validator

独自空忆成欢 提交于 2019-12-04 00:11:35
JSR-303 与 hibernate-validator Spring3支持JSR-303验证框架,JSR-303 是Java EE 6 中的一项子规范,叫做BeanValidation,官方参考实现是hibernate-validator(与Hibernate ORM 没有关系),JSR 303 用于对Java Bean 中的字段的值进行验证。 hibernate-validator实现了JSR-303规范,并扩展了一些注解,提供了一套比较完善、便捷的验证实现方式。 常用验证: @Null 限制只能为null @NotNull 限制必须不为null @AssertFalse 限制必须为false @AssertTrue 限制必须为true @DecimalMax(value) 限制必须为一个不大于指定值的数字 @DecimalMin(value) 限制必须为一个不小于指定值的数字 @Digits(integer,fraction) 限制必须为一个小数,且整数部分的位数不能超过integer,小数部分的位数不能超过fraction @Future 限制必须是一个将来的日期 @Max(value) 限制必须为一个不大于指定值的数字 @Min(value) 限制必须为一个不小于指定值的数字 @Past 限制必须是一个过去的日期 @Pattern(value)