日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

Python通過Schema實現(xiàn)數(shù)據(jù)驗證方式

瀏覽:31日期:2022-07-05 17:21:55

Schema是什么?

不管我們做什么應用,只要和用戶輸入打交道,就有一個原則--永遠不要相信用戶的輸入數(shù)據(jù)。意味著我們要對用戶輸入進行嚴格的驗證,web開發(fā)時一般輸入數(shù)據(jù)都以JSON形式發(fā)送到后端API,API要對輸入數(shù)據(jù)做驗證。一般我都是加很多判斷,各種if,導致代碼很丑陋,能不能有一種方式比較優(yōu)雅的驗證用戶數(shù)據(jù)呢?Schema就派上用場了。

Schema非常簡單,也就幾百行的代碼,最核心的類就一個:Schema。

1. 給Schema類傳入類型(int、str、float等)

例如:

from schema import Schema

Schema(int).validate(10)10Schema(int).validate(’10’)SchemaUnexpectedTypeError: ’10’ should be instance of ’int’

可見Schema會去驗證validate方法傳入的對象是不是所指定的類型,是則返回傳入的數(shù)據(jù),否則拋出一個SchemaError的異常(SchemaUnexpectedTypeError是SchemaError的子類)。

2. 給Schema類傳入可調(diào)用的對象(函數(shù)、帶__call__的類等)

例如:

Schema(lambda x: 0<x<10).validate(5)5Schema(lambda x: 0<x<10).validate(57)SchemaError: <lambda>(57) should evaluate to True

可見Schema會把validate方法傳入的值傳入到對應的函數(shù)里面作為參數(shù),如果函數(shù)返回值為True則返回輸入數(shù)據(jù),否則拋出異常。

3. 給Schema類傳入帶有validate方法的對象

Schema也內(nèi)置了一些類(Use、And、Or等等),這些類的實例都帶有validate方法,亦可作為Schema的參數(shù)傳入,例如:

from schema import Schema, And

# And代表兩個條件必須同時滿足Schema(And(str, lambda s: len(s) > 2)).validate(’abcd’)’abcd’

4. 給Schema類傳入容器對象(list、tuple、set等)

例如:

Schema([int, float]).validate([1, 2, 3, 4.0])[1, 2, 3, 4.0]

相當于,對于[1, 2, 3, 4.0]當中的任何一個元素,必須是int或者float才行(注意是or的關(guān)系)

5. 給Schema傳入一個字典對象(大部分使用Schema的場景都是傳入字典對象,這個很重要)

Schema({’name’: str, ’age’: int}).validate({’name’: ’foobar’, ’age’: 18}){’age’: 18, ’name’: ’foobar’}Schema({’name’: str, ’age’: int}).validate({’name’: ’foobar’})SchemaMissingKeyError: Missing keys: ’age’

首先,明確兩個概念,Schema類傳入的字典,稱之為模式字典,valdiate方法傳入的字典稱之為數(shù)據(jù)字典。

首先,Schema會判斷, 模式字典和數(shù)據(jù)字典的key是否完全一樣,不一樣的話直接拋出異常。如果一樣,就去拿數(shù)據(jù)字典的value去驗證模式字典相應的value,如果數(shù)據(jù)字典的全部value都可以驗證通過的話才返回數(shù)據(jù),否則拋出異常,是不是感覺這種驗證頓時感覺清爽了呢?

6. faqs

Schema傳入字典很好用,但是我有的數(shù)據(jù)是可選的,也就是說有的key可以不提供怎么辦?

from schema import Optional, Schema

Schema({’name’: str, Optional(’age’): int}).validate({’name’: ’foobar’}){’name’: ’foobar’}Schema({’name’: str, Optional(’age’, default=18): int}).validate({’name’: ’foobar’}){’age’: 18, ’name’: ’foobar’}

我想讓Schema只驗證傳入字典中的一部分數(shù)據(jù),可以有多余的key但是不要抱錯,怎么做?

Schema({’name’: str, ’age’: int}, ignore_extra_keys=True).validate({’name’: ’foobar’, ’age’: 100, ’sex’: ’male’}){’age’: 100, ’name’: ’foobar’}

Schema拋出的異常信息不是很友好,我想自定義錯誤信息,怎么辦?

Schema自帶的類(Use、And、Or、Regex、Schema等)都有一個參數(shù)error,可以自定義錯誤信息

Schema({’name’: str, ’age’: Use(int, error=’年齡必須是整數(shù)’)}).validate({’name’: ’foobar’, ’age’: ’abc’})

SchemaError: 年齡必須是整數(shù)

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標簽: Python 編程
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
久久成人一区| 国产劲爆久久| 欧美成人基地| 日韩1区在线| 国产中文在线播放| 国产99在线| 在线亚洲人成| 日韩av有码| 久久激情中文| 亚洲黑丝一区二区| 国产精品老牛| 日韩一区二区三区精品视频第3页 日韩一区二区三区免费视频 | 免费一区二区三区在线视频| 亚洲女人av| 亚洲欧美在线综合| 欧美日韩精品一区二区三区视频| 在线国产日韩| 免费不卡在线视频| 日本成人在线不卡视频| 亚洲精品乱码日韩| 欧美精品国产白浆久久久久| 亚洲精品麻豆| 国产女人18毛片水真多18精品| 91精品日本| 免费一级欧美在线观看视频| 国产亚洲高清一区| 国产一区二区视频在线看| 成人一二三区| 欧美+日本+国产+在线a∨观看| 国产综合亚洲精品一区二| 国产韩日影视精品| 日韩精品一二区| 国产精品白丝久久av网站| 国产一区二区三区四区二区| 久久中文欧美| 99久久久久久中文字幕一区| 激情欧美亚洲| 日韩不卡在线观看日韩不卡视频 | 视频一区日韩精品| 久久不见久久见中文字幕免费| 麻豆国产在线| 欧美~级网站不卡| 日韩精品视频网| 中文在线资源| 日本一区中文字幕| 麻豆精品视频在线| 欧美日韩精品一区二区视频| 好看不卡的中文字幕| 亚州av日韩av| 天堂√8在线中文| 亚洲色图网站| 91嫩草亚洲精品| 最近国产精品视频| zzzwww在线看片免费| 日韩视频久久| 国产精品高清一区二区| 成人精品中文字幕| 亚洲3区在线| 丰满少妇一区| 伊人久久亚洲| 国产传媒在线观看| 日本中文字幕一区二区| 精品国产欧美日韩| 美女被久久久| 日韩一区二区在线免费| 亚洲综合中文| 精品免费av在线| 国产免费播放一区二区| 免费精品国产| 久久一区国产| 综合一区二区三区| 999国产精品视频| 欧美激情五月| 亚洲免费毛片| 日韩视频在线一区二区三区| 亚洲精品字幕| 婷婷国产精品| 精品国产欧美日韩一区二区三区| 日本大胆欧美人术艺术动态| 美女尤物国产一区| 午夜精品影视国产一区在线麻豆| 日本欧美不卡| 国产精品www.| 亚洲午夜国产成人| 久久国产电影| 色综合狠狠操| 欧美激情aⅴ一区二区三区| 亚洲一区二区三区四区五区午夜 | 蜜桃视频一区二区三区在线观看| 国产激情综合| 亚洲久久在线| 狠狠久久婷婷| 99精品在线观看| 国产91在线播放精品| 日本va欧美va精品| 蜜桃视频一区二区| 日韩视频一区二区三区在线播放免费观看| 在线中文字幕播放| 精品久久久久久久| 国产欧美亚洲精品a| 国产亚洲福利| 91成人网在线观看| 日韩另类视频| 91日韩欧美| 国产成人久久精品一区二区三区| 日韩av一区二区三区四区| 欧美日韩四区| 欧美日韩国产精品一区二区亚洲| 亚洲综合电影| 国产一区二区三区探花| 国产亚洲精aa在线看| 免费在线观看一区二区三区| 成人日韩av| 精品99久久| 精品午夜av| 荡女精品导航| 中文字幕高清在线播放| 欧美1区2区3| 国产精品一区二区美女视频免费看| 人人精品人人爱| 丝袜美腿亚洲一区| 蜜桃av一区二区| 亚洲精品进入| 日本天堂一区| 国产欧美日韩免费观看| 日韩和欧美一区二区| 国产亚洲一级| 美女网站久久| 日韩一区网站| 欧美亚洲免费| 你懂的亚洲视频| 日韩88av| 在线日韩一区| 国产麻豆综合| 日韩高清在线不卡| 国产精品日本一区二区三区在线| 欧美日韩一区二区三区不卡视频 | 视频一区国产视频| 视频一区二区三区在线| 天堂va蜜桃一区二区三区| 好吊日精品视频| 亚洲欧美在线专区| 国产调教精品| 精品国产鲁一鲁****| 国产一区二区三区不卡视频网站 | 黄色在线观看www| 成人看片网站| 日韩专区一卡二卡| 日韩高清在线不卡| 国产精品男女| 欧美日韩国产v| 久久福利精品| 国产精品久久久久久久久久久久久久久 | 成人羞羞在线观看网站| 电影亚洲精品噜噜在线观看| a天堂资源在线| 久久精品高清| 亚洲毛片在线| 久久这里只有精品一区二区| 国产精品久久久久9999高清| 国产欧美午夜| 欧美sm一区| 中文精品电影| 欧美在线日韩| 成人久久久久| 在线视频亚洲欧美中文| 欧美日韩1区| 国产精品xx| 视频一区中文字幕| 久久精品免视看国产成人| 六月婷婷综合| 99亚洲视频| 久久99性xxx老妇胖精品| 国产精品yjizz视频网| 国产一区二区三区自拍| 久久不射网站| 国产精品66| 不卡一区2区| 久久精品999| 亚洲高清久久| 国产精品白丝久久av网站| 久久久久.com| 亚洲资源网站| av高清一区| 久久国内精品| 欧美日韩日本国产亚洲在线| 中文字幕日韩高清在线| 久久gogo国模啪啪裸体| 欧美日韩在线播放视频| 亚洲aa在线| 久久男人av资源站| 综合亚洲视频| 久久久久中文| 国产精品欧美大片| 国产精品美女久久久| 国产精品亚洲四区在线观看| 成人影视亚洲图片在线| 91久久在线| 国产精品高颜值在线观看| 伊人久久一区|