如何从python谷歌应用引擎端点中的方法返回一个对象?

时间:2015-12-10 05:26:39

标签: python google-app-engine

我正在尝试使用谷歌应用引擎运行自己的身份验证,并使用this question:中的代码

我在我的端点服务器类中编写了一个方法,如下所示:

 @classmethod
 def get_user_from_headers(cls):
    try:
        user_id = cls.request_state.headers['user-id']
        api_token = cls.request_state.headers['api-token']
        user = ndb.Key(User, int(user_id)).get()
        if user.apiToken != api_token:
            raise endpoints.UnauthorizedException('Api Token error')
        return user
    except:
        raise endpoints.UnauthorizedException('no user found')

别处:

@endpoints.method(containers.AddMemberToEventContainer, messages.EventsMessage, path='events/{event_id}',
                  http_method='POST', name='add.member.to.event')
def add_member_to_event(self, req):
    user = self.get_user_from_headers()

用户类只是扩展了ndb.Model,即User(ndb.Model)

但是当我返回用户时,python发出一条错误,指出用户不能用user = self.get_user_from_headers()

行来调用

在get headers方法的内部,我在返回用户之前尝试了日志记录,并按预期显示在日志中。如何将用户从此方法传回到端点方法?

编辑: 这是实际的错误:

TypeError: 'User' object is not callable

1 个答案:

答案 0 :(得分:0)

我不知道这是否是正确的方法,但我创建了一个Callable Model类并扩展了:

class CallableModel(ndb.Model)
    def __call__(self):
        return self

现在它有效....