金字塔遍历资源网址没有属性__name__

时间:2012-09-03 03:07:54

标签: python pyramid

所以我有:

resources.py:

 def _add(obj, name, parent):
     obj.__name__ = name
     obj.__parent__ = parent
     return obj

 class Root(object):
     __parent__ = __name__ = None

     def __init__(self, request):
         super(Root, self).__init__()
         self.request = request
         self.collection = request.db.post

     def __getitem__(self, key):
         if u'profile' in key:
             return Profile(self.request)

 class Profile(dict):

     def __init__(self, request):
         super(Profile, self).__init__()
         self.__name__ = u'profile'
         self.__parent__ = Root
         self.collection = request.db.posts

     def __getitem__(self, name):
         post = Dummy(self.collection.find_one(dict(username=name)))
         return _add(post, name, self)

我正在使用MongoDB和pyramid_mongodb

views.py:

@view_config(context = Profile, renderer = 'templates/mytemplate.pt')
def test_view(request):
    return {}

和mytemplate.pt:

 <p tal:repeat='item request.context'>
      ${item}
 </p>

我可以回复数据库中的内容(我正在使用mongodb),但是当我使用resource_url()为每个项目提供了一个URL

 <p tal:repeat='item request.context'>
 <a href='${request.resource_url(item)}'>${item}</a>
 </p>

我收到了错误:'dict' object has no attribute '__name__',有人可以帮助我吗?

1 个答案:

答案 0 :(得分:2)

完整的回溯肯定会有用。但是在你的例子中我至少可以说self.__parent__ = Root需要使用实际的对象,而不是类。