我是金字塔和遍历概念的新手。我有一个使用遍历的基本对象模型,但是对象不知道位置,因此请阅读此页面上的金字塔文档http://docs.pylonsproject.org/projects/pyramid/en/1.0-branch/narr/ resources.html#location-aware它谈到了使用 pyramid_traversalwrapper。
按照说明,我在主要内容中添加了以下几行:
config = Configurator(root_factory=Root)
config.registry.registerAdapter(ModelGraphTraverser, (Interface,),
ITraverser)
我的遍历树对象的其余部分如下所示:
class Root(object):
def __init__(self, request):
pass
def __getitem__(self, key):
if key == 'users':
return UserList()
raise KeyError
class UserList():
def __getitem__(self, key):
users = {'a':None,'b':None, 'c':None}
if key in users:
return User()
raise KeyError
class User(object):
def __init__(self):
pass
def __getitem__(self, key):
if (key == 'channels'):
return Channels()
def GET(self):
return Response("got user")
当我运行代码时,它似乎在解析 url 时使用了 ModelGraphTraverser,但是我必须做些什么才能让我的模型能够感知位置,比如知道__parent__
等等__name__
?我必须添加包装类吗?如果是这样,我该怎么做?pyramid_traversalwrapper 应该使管理变得__parent__
轻松__name__
,但我不知道如何利用它。