2012-09-02 2 views
2

는 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() 

, 나는 request.db.post를 사용하여 데이터베이스에 데이터를 반환 할 수 있습니다, 나는 다른 자원을 만든 __init__() 다음 나는

를 제거 정확히 2 개 인자 (주어진 1)

를 취합니다

class Post(dict): 

    def __init__(self, request): 
     super(Post, self).__init__() 
     self.__name__ = u'post' 
     self.__parent__ = Root 
     self.collection = request.db.post 
나는 오류를 얻었다 0
self.collection = request.db.post 

게시물에 오류가 반환되지 않지만 데이터베이스의 모든 데이터를 Post에서 반환 할 수 없으므로 루트가 아닌 다른 리소스에서 데이터베이스의 데이터를 어떻게 반환합니까?

답변

2

아무런 인수없이 Post() 인스턴스를 생성하지만 생성자는 request 매개 변수를 전달해야합니다. 어느 쪽의 요청에 전달하거나 매개 변수 요구 사항 제거 :

return Post(self.request) 

나 :

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

난 당신이 데이터베이스를 일반적으로 액세스하는 방법을 모르겠어요; request.db을 통해 데이터베이스에 액세스하는 유일한 방법 인 경우 Post() 인스턴스에 self.request을 전달하고 Post 클래스의 self.request.db에 액세스하십시오.

+0

시도했지만 여전히 작동하지 않습니다. 문제가 'request' 및'self.collection'을 오류 제거없이 'Post'에서 __init __ (self, request)로 보낸 것 같습니다.하지만 i 루트 –

+0

이외의 다른 리소스를 사용하여 데이터베이스의 데이터를 반환 할 수 없습니다. @FarisNasution : 정확하고 분석이 잘못되었습니다. 당신의 생성자는 요청 객체를 기대하지만 그것을 결코 넘겨주지 않습니다. 사실,'super()'는 dict를 호출하는 것이 좋습니다. 답변을 수정했습니다. –