0

ので、私は持っています:

リソース.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

ビュー.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を使用しています)が、使用して各アイテムのURLを提供したときresource_url()

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

エラーが発生しました: 'dict' object has no attribute '__name__'、誰か助けてくれませんか?

4

1 に答える 1

2

完全なトレースバックは確かに便利です。self.__parent__ = Rootただし、あなたの例では、クラスではなく実際のオブジェクトを使用する必要があると少なくとも言えます。

于 2012-09-03T07:17:26.860 に答える