python - 验证棉花糖中的列表
问题描述
目前我正在使用棉花糖模式来验证请求,我有一个列表,我需要验证它的内容。
class PostValidationSchema(Schema):
checks = fields.List(
fields.String(required=True)
)
检查字段是一个列表,它应该只包含这些特定值["booking", "reservation", "flight"]
解决方案
如果您的意思是检查列表中只有这三个元素的顺序,那么使用Equal
验证器。
from marshmallow import Schema, fields, validate
class PostValidationSchema(Schema):
checks = fields.List(
fields.String(required=True),
validate=validate.Equal(["booking", "reservation", "flight"])
)
schema = PostValidationSchema()
schema.load({"checks": ["booking", "reservation", "flight"]}) # OK
schema.load({"checks": ["booking", "reservation"]}) # ValidationError
如果列表可以包含任意数量的元素,并且这些元素只能是这三个特定值之一,则使用OneOf
验证器。
from marshmallow import Schema, fields, validate
class PostValidationSchema(Schema):
checks = fields.List(
fields.String(
required=True,
validate=validate.OneOf(["booking", "reservation", "flight"])
),
)
schema = PostValidationSchema()
schema.load({"checks": ["booking", "reservation", "flight"]}) # OK
schema.load({"checks": ["booking", "reservation"]}) # OK
schema.load({"checks": ["booking", "dummy"]}) # ValidationError
推荐阅读
- accessibility - 颜色对比度可访问性检查器
- php - 在 prestashop 上导入类别和产品
- php - Apache 服务器:将子文件夹作为我的 dns 的主站点。
- javascript - 将python对象绑定到html按钮
- wpf - ReportViewer 在打印布局中不正确地呈现/打印图表
- php - 将数组制作成具有相同键 => 值的多维数组
- c# - TreeViewItem 命令绑定
- c - C中指针减法期间的除法
- javascript - 在使用 Bootstrap-Vue 时,如何防止在单击嵌套的 b-input 组件时关闭 b-dropdown?
- bash - 使用 bash 循环浏览目录中的文件,然后根据文件名创建子目录