根据架构验证dict

valedictor的Python项目详细描述


https://badge.fury.io/py/valedictory.svghttps://readthedocs.org/projects/valedictory/badge/?version=latest

valedictory验证dicts中的数据。 设计用于API验证, 以及接收结构化json数据的其他情况 与关键值post-form数据相反。 它接受一个数据指令(可能是从json post请求获得的)。 并根据某些字段验证该数据。

验证器被定义为类。 声明验证器类上的字段。 一旦构造,验证程序实例是不可变的。

fromvaledictoryimportValidator,fields,InvalidDataExceptionclassPersonValidator(Validator):name=fields.CharField()height=fields.IntegerField()date_of_birth=fields.DateField()person_validator=PersonValidator()

可以检查python dict是否符合这个验证器。 dict可以来自json post请求或配置文件, 或任何其他需要验证和清理的外部数据源。 将返回已清除的数据。 验证器类将返回已清理数据的dict。 作为清理数据的一部分,每种字段类型都可以转换数据。 例如,DateField将转换数据 变成一个datetime.date实例。

input_data=json.loads(request.body)try:# cleaned_data will be a dict of cleaned, validated datacleaned_data=person_validator.clean(input_data)# Do something with the returned dataPerson.objects.create(**cleaned_data)exceptInvalidDataExceptionaserrors:# The data did not pass validationforpath,messageinerrors.flatten():# This will print something like 'name: This field is required'print("{0}: {1}".format('.'.join(path),message))

验证器可以嵌套,允许任意复杂度的DIST:

classArticleValidator(Validator):content=fields.CharField()published=fields.DateTimeField()author=fields.NestedValidator(PersonValidator())tags=fields.ListField(fields.CharField())# Some example data that would pass validation:data={"content":"An interesting article","published":"2018-06-13T1:44:00+10:00","author":{"name":"Alex Smith","height":175,"date_of_birth":"1990-03-26",},"tags":["humour","interesting","clickbait"],}

Read the documentation for more information

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何将jaxb插件扩展与gradlejaxbplugin一起使用   java Hibernate列表<Object[]>到特定对象   java使用多态性显示arraylist的输出   java水平堆叠卡,带有一定偏移量   java错误:找不到符号方法liesInt()   java客户机/服务器文件收发中的多线程流管理   在java中可以基于访问重载方法吗?   包含空元素的java排序数组   swing Java按钮/网格布局   java BottomNavigationView getmaxitemcount   java空指针异常字符串生成器   java Xamarin升级导致“类文件版本错误52.0,应为50.0”错误   java我正在尝试打印它,而不只是对每一行进行println   Tomcat7中的java是否需要复制上下文。将xml转换为conf/Catalina/locahost以使其生效   带有注入服务的java REST端点在何处引发自定义WebServiceException?   在Java中使用GPS数据   java如何将JFreeChart ChartPanel导出到包含添加的CrosshairOverlay的图像对象?   内置Eclipse期间的Java 8堆栈溢出   java在GWT编译的JavaScript中如何表示BigDecimal