0
所以我必須:金字塔遍歷資源URL沒有屬性__name__
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 {}
and in mytemplate.pt:
<p tal:repeat='item request.context'>
${item}
</p>
我可以附和什麼是數據庫(我使用MongoDB的),但是當我使用的每個項目提供了一個網址resource_url()
<p tal:repeat='item request.context'>
<a href='${request.resource_url(item)}'>${item}</a>
</p>
我得到了一個錯誤:'dict' object has no attribute '__name__'
,有人可以幫我嗎?
FWIW在你的粘貼中,配置文件沒有用'dict'。如果沒有任何內容匹配而不是返回None的上下文,'Root .__ getitem__'應該引發'KeyError'。 –
您可能想要更詳細地閱讀[看起來是您的出發點的博文](http://kusut.web.id/2011/03/27/pyramid-traversal-and-mongodb/)。作者使用'dict'子類有一個原因,你不會複製。 –
這不是你的問題的直接原因,但'self .__ parent__ = Root'行是錯誤的''Root'是一個*類*,你需要一個*實例*的類。傳遞給你的構造函數的引用:'def __init __(self,parent,request)' – Sergey