首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用pyramid_traversalwrapper?

如何使用pyramid_traversalwrapper?
EN

Stack Overflow用户
提问于 2012-05-21 23:50:36
回答 1查看 235关注 0票数 0

我对金字塔和遍历概念都是新手。我有一个使用遍历的基本对象模型,但是对象是不知道位置的,所以阅读这个页面上的金字塔文档http://docs.pylonsproject.org/projects/pyramid/en/1.0-branch/narr/resources.html#location-aware,它谈到了使用pyramid_traversalwrapper。

按照指示,我在main中添加了以下代码行:

代码语言:javascript
复制
config = Configurator(root_factory=Root)
config.registry.registerAdapter(ModelGraphTraverser, (Interface,),
                            ITraverser)

我的其他遍历树对象如下所示:

代码语言:javascript
复制
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")

当我运行代码时,它似乎确实在解析urls时使用了ModelGraphTraverser,然而,我必须做什么才能让我的模型知道位置,就像知道__parent____name__之类的东西一样?我必须添加包装器类吗?如果是这样的话,我该怎么做呢?pyramid_traversalwrapper应该让管理__parent____name__变得轻松,但我不知道如何利用它。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-30 16:08:56

pyramid_traversalwrapper在遍历对象时自动设置对象的__name____parent__属性(否则必须手动执行此操作)。

这意味着您可以在视图中使用对象的这些属性。以你的例子为例:

代码语言:javascript
复制
@view_config(context='Channels')
def some_view(context, request):
    user = context.__parent__
    userlist = user.__parent__
    print user.__name__  # Prints a, b or c
    print userlist.__name__  # Prints 'users'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10688458

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档