【发布时间】:2015-07-29 21:48:21
【问题描述】:
我有一组滤锅 SchemaNodes 在 API 中与 Pyramid/Cornice 一起使用。对于某些查询字符串参数,传递一个范围(即time=X-Y 表示从X 到Y 的时间范围,其中X 和Y 是表示时期的整数)。我目前使用RegEx() 验证器对此进行验证,以确保传入一个纪元或纪元范围:
class TimeOrRange(SchemaNode):
schema_type = String
location = "querystring"
description = 'Time (or range) in epochs: ssssssssss(-ssssssssss)'
validator = Regex("^[0-9]{10}\-{0,1}[0-9]{0,10}$")
然后我在 MappingSchema 中使用它,然后使用 @view(schema=TimedThingGet) 绑定到我的 Cornice 视图:
class TimedThingGet(MappingSchema):
time = TimeOrRange(missing=drop)
我想做的是更新我的TimeOrRange SchemaNode 代码中的返回值,所以TimedThingGet 中的time 是一个时间范围的元组。换句话说,如果time=X-Y 被传递给TimedThingGet 实例,那么time=(x, y) 将在验证数据中返回。同样,如果只传入X,那么我希望将Y 设置为now() 的纪元。
看起来set_value() 是要走的路,这里的问题得到了一些额外的功劳:
- 是在验证之前还是之后调用
set_value? -
set_value是否有权访问验证器,以便可以使用创建正则表达式组的RegEx验证器来设置我的元组:time=(validated.match.group[1], validated.match.group[2])?
【问题讨论】:
标签: python pyramid colander cornice