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):
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以外的其他资源返回数据库中的任何数据?
答案 0 :(得分:2)
您创建一个没有任何参数的Post()
实例,但您的构造函数希望您传入request
参数。传递请求或删除参数要求:
return Post(self.request)
或:
class Post(dict):
def __init__(self):
# ...
我不知道您是如何正常访问数据库的;如果通过request.db
访问数据库的唯一方法,则将self.request
传递到Post()
个实例,然后访问self.request.db
课程中的Post
。