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

您的位置:首頁技術文章
文章詳情頁

Python通過Schema實現數據驗證方式

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

Schema是什么?

不管我們做什么應用,只要和用戶輸入打交道,就有一個原則--永遠不要相信用戶的輸入數據。意味著我們要對用戶輸入進行嚴格的驗證,web開發時一般輸入數據都以JSON形式發送到后端API,API要對輸入數據做驗證。一般我都是加很多判斷,各種if,導致代碼很丑陋,能不能有一種方式比較優雅的驗證用戶數據呢?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方法傳入的對象是不是所指定的類型,是則返回傳入的數據,否則拋出一個SchemaError的異常(SchemaUnexpectedTypeError是SchemaError的子類)。

2. 給Schema類傳入可調用的對象(函數、帶__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方法傳入的值傳入到對應的函數里面作為參數,如果函數返回值為True則返回輸入數據,否則拋出異常。

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

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

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的關系)

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方法傳入的字典稱之為數據字典。

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

6. faqs

Schema傳入字典很好用,但是我有的數據是可選的,也就是說有的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只驗證傳入字典中的一部分數據,可以有多余的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等)都有一個參數error,可以自定義錯誤信息

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

SchemaError: 年齡必須是整數

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

標簽: Python 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
奇米色欧美一区二区三区| 亚洲国产一区二区在线观看 | 国产精品高清一区二区| 国产亚洲一级| 久久福利毛片| 亚洲精品系列| 亚洲精品在线二区| 色狠狠一区二区三区| 日本午夜精品久久久久| 久久狠狠久久| 久久精品国产一区二区| 国产精品亚洲二区| 久久中文字幕导航| 亚洲成人不卡| 日韩午夜av| 亚洲精品九九| 国产欧美日韩精品一区二区三区| 999国产精品| 久久精品不卡| 美女日韩在线中文字幕| 日韩精品一区二区三区中文在线 | 综合欧美精品| 日韩精品导航| 久久av网站| 天堂8中文在线最新版在线| 日韩精品一卡| 亚洲欧美视频| 国产精品亲子伦av一区二区三区| 蜜桃视频欧美| 亚洲激情中文| 石原莉奈在线亚洲二区| 欧美日韩夜夜| 亚洲制服少妇| 日本国产一区| 国产成人免费| 黄色欧美日韩| 欧美日韩亚洲一区三区| 国产传媒av在线| 亚洲精品一区二区妖精| 日本欧美一区二区| 91麻豆国产自产在线观看亚洲| 91麻豆精品| 精品国产黄a∨片高清在线| 精品日韩毛片| 国产亚洲欧美日韩精品一区二区三区 | 九九综合九九| 日韩三区四区| 久久精品亚洲| 欧美特黄a级高清免费大片a级| 日韩一区亚洲二区| 一区免费在线| 国产精品一区免费在线| 久久高清精品| 日本a级不卡| 国产在线一区不卡| 午夜亚洲一区| 91视频久久| 综合一区二区三区| 亚洲精品88| 97久久超碰| 国内激情久久| 美女高潮久久久| 在线视频亚洲| 国产精品99在线观看| 影音先锋久久精品| 欧美日韩视频网站| 欧美日韩精品一区二区三区视频 | 日韩精品视频中文字幕| 成人午夜毛片| 亚洲精品系列| 免费不卡中文字幕在线| 久久久精品国产**网站| 日韩在线观看一区二区| 日韩欧美精品综合| 国产乱子精品一区二区在线观看 | 福利一区二区| 亚洲日本在线观看视频| 日韩在线短视频| 你懂的国产精品永久在线| 激情欧美丁香| 国产精品二区不卡| 91在线成人| 午夜在线精品| 精品国产亚洲一区二区三区| 亚洲免费毛片| 欧美日韩一区二区综合| 精品国产亚洲日本| 欧美日韩一区二区三区不卡视频 | 精品久久影院| 天海翼亚洲一区二区三区| 亚洲五月婷婷| 激情综合五月| 国产日产精品_国产精品毛片| 日韩福利视频网| 日本免费在线视频不卡一不卡二| 国产精品网在线观看| 亚洲一区二区三区在线免费| 久久亚洲在线| 国产在线不卡一区二区三区| 国产精品久久久久久av公交车| 国产a亚洲精品| 日韩国产在线观看| 亚洲毛片在线免费| 蜜臀va亚洲va欧美va天堂| 在线日韩一区| 久久精品91| 日韩欧美1区| 欧美激情另类| 欧美激情国产在线| 欧美激情国产在线| 国产精品毛片一区二区在线看| 91久久视频| 日韩免费一区| 国产一区二区三区黄网站| 日本成人精品| 日韩**一区毛片| 日韩欧美中文字幕电影| 蜜臀av性久久久久蜜臀aⅴ流畅| 麻豆精品在线视频| 亚洲精品国产精品粉嫩| 日本欧美在线看| 少妇久久久久| 欧美日中文字幕| 午夜国产一区二区| 亚洲作爱视频| 欧美日韩国产一区二区三区不卡 | 国产精品一区二区美女视频免费看 | 精品三级国产| 麻豆精品视频在线| 麻豆成人综合网| 精品视频自拍| 精品中文字幕一区二区三区| 国产精品99久久免费| 麻豆久久久久久| 国产中文在线播放| 日本精品在线中文字幕| 91精品婷婷色在线观看| 午夜精品亚洲| 激情欧美丁香| 丝袜亚洲另类欧美| 亚洲tv在线| 国产精品久久久一区二区| 久久99影视| 日本一区二区免费高清| 免费高潮视频95在线观看网站| 老牛影视一区二区三区| 国产女优一区| 欧美日一区二区在线观看| 国产精品一区高清| 国产一区二区三区黄网站 | 精品视频网站| 不卡专区在线| 五月天综合网站| 日韩影院免费视频| 欧美亚洲tv| 91亚洲自偷观看高清| 欧美99久久| 亚洲欧洲国产精品一区| 国产精品乱战久久久| 国产高潮在线| 久久福利毛片| 久久只有精品| 免费视频亚洲| 97久久精品| 日韩综合精品| 国产精品试看| 国产精品大片免费观看| 欧美sm一区| 视频一区二区三区在线| 国产精品久久久久久久免费软件| 亚洲综合日韩| 日本电影久久久| 中文字幕色婷婷在线视频| 99成人在线| 国产精品黄网站| 不卡中文字幕| 国产精品极品在线观看| 欧美成a人国产精品高清乱码在线观看片在线观看久 | 国产日韩一区| 日韩欧美在线中字| 婷婷亚洲成人| 国产资源在线观看入口av| 亚洲免费观看| 国产精品视频一区二区三区综合| 亚洲免费一区三区| 鲁大师精品99久久久| 精品一区三区| 欧美有码在线| 欧美+亚洲+精品+三区| 国产精品综合色区在线观看| 中文另类视频| 国产精品网站在线看| 亚洲精品在线观看91| 国产免费av一区二区三区| 久久精品主播| 国产劲爆久久| 欧美在线综合| 日韩免费福利视频| 国产精品男女| 视频一区免费在线观看|