Python 来自数据库的金字塔遍历返回数据(mongodb)
resources.py:Python 来自数据库的金字塔遍历返回数据(mongodb),python,mongodb,pyramid,Python,Mongodb,Pyramid,resources.py: 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):
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'post' in key:
return Post()
在根资源中,我可以使用request.db.post返回数据库上的任何数据,然后我创建了另一个资源:
class Post(dict):
def __init__(self, request):
super(Post, self).__init__()
self.__name__ = u'post'
self.__parent__ = Root
self.collection = request.db.post
我得到一个错误:\uuuu init\uuuu()
只接受2个参数(给定1个)
然后,我移除
self.collection = request.db.post
在Post上,没有错误返回,但我无法从Post返回数据库中的任何数据,那么如何从除Root以外的其他资源返回数据库中的任何数据呢?您创建了一个没有任何参数的Post()
实例,但构造函数希望您传入一个请求
参数。传入请求或删除参数要求:
return Post(self.request)
或:
我不知道你是如何正常访问数据库的;如果通过
request.db
访问数据库的唯一方法是将self.request
传递给您的Post()
实例,并在Post
类中访问self.request.db
。我已经尝试过,但仍然不起作用,问题似乎来自初始化(self,request)
,当我删除request
和self.collection
时,没有错误返回,但我仍然无法使用其他资源从数据库返回任何数据,而不是root@FarisNasution:你是对的,我的分析是错的;您的构造函数需要一个请求对象,但您从未传入它。事实上,dict的super()
调用工作正常。更正了答案。
class Post(dict):
def __init__(self):
# ...