我必须在视图中强制定义模式,因为'missing'需要是动态的:
# ...
now = datetime.datetime.utcnow()
delta = datetime.timedelta(days=range)
schema = SchemaNode(Mapping())
schema.add(SchemaNode(Date(), name='to', missing=now))
schema.add(SchemaNode(Date(), name='from', missing=now - delta))
# ...
Run Code Online (Sandbox Code Playgroud)
这很难看.除了定义自定义类型之外还有更好的方法吗?
使用架构绑定.
@colander.deferred
def deferred_now(node, kw):
now = kw['now']
return now
@colander.deferred
def deferred_now_delta(node, kw):
return kw['now'] - kw['delta']
class MySchema(MappingSchema):
to = SchemaNode(Date(), missing=deferred_now)
frm = SchemaNode(Date(), missing=deferred_now_delta)
def aview(request):
schema = MySchema().bind(now=now(), delta=somedelta)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
776 次 |
| 最近记录: |