【发布时间】:2012-03-07 17:11:27
【问题描述】:
从我的question 中了解遍历以及整个资源和上下文概念后,我尝试了一些教程示例,这些示例使用文档中所述的混合路由。如果不是一些小问题,我有点理解:
如果我要遍历以下 URL:http://example.com/product/123/edit,并带有以下 add_route 配置:
config = Configurator(settings=**settings, root_factory=RootFactory)
config.add_route('product_edit', '/product/{pid}/edit', factory=ProductFactory, traverse='/{pid}/edit')
config.add_view(route_name='product_edit', name='edit', renderer='edit.mako')
是不是说当我给 add_route 函数提供一个产品工厂时,根资源工厂变成了产品工厂(因此产品工厂现在是新的根资源)?
如果根资源确实更改为 ProductFactory 进行遍历,我将 ProductFactory 的
__parent__和__name__属性设置为什么?因为看起来__parent__将是None,对吗?
这是我的 ProductFactory 代码:
class ProductFactory(object):
__name__ = 'product'
__parent__ = None
def __getitem__(self, key):
if key.isnumber():
try:
p = sess_.query(model.Product).filter(pid=key).one()
except:
raise DBException()
if p:
return p
else:
return KeyError
【问题讨论】: