2

资源.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):
        if u'post' in key:
            return Post()

在 Root 资源中,我可以使用 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

我收到一个错误:__init__()正好需要 2 个参数(给定 1 个)

然后我删除

self.collection = request.db.post

在 Post 上,并且没有错误返回,但是我无法从 Post 中返回数据库中的任何数据,那么如何从除 Root 之外的其他资源中返回数据库中的任何数据?

4

1 回答 1

2

您创建一个Post()没有任何参数的实例,但您的构造函数希望您传入一个request参数。传入请求或删除参数要求:

return Post(self.request)

或者:

class Post(dict):
   def __init__(self):
       # ...

我不知道你是如何正常访问你的数据库的;如果唯一的方法是通过request.db然后传递self.request给您的Post()实例并self.request.db在您的Post类中访问您的数据库。

于 2012-09-02T12:08:01.680 回答