Google App Engine get_current_user始终返回None,即使我已登录

时间:2012-07-07 09:48:27

标签: python google-app-engine google-cloud-platform google-cloud-datastore

这是我的代码

 def subscribe_current_user(self):
        user1 = SocialNodeSubscription(parent=self.key)
        user1.subscribed = True
        current_user = users.get_current_user()
        logging.error(current_user)
        if current_user:
            user1.user=current_user
        else:
            raise users.UserNotFoundError

        user1.put()

问题是即使我已登录,get_current_user也会返回None。它在字段user1.user中存储None,并在日志控制台中输出None。

我该如何解决?

3 个答案:

答案 0 :(得分:1)

您是否在app.yaml中为您的处理程序定义了login: required,或者您是否使用users.create_login_url()提供了登录网址,以便用户可以明确登录。

即使你在某个地方登录谷歌,users.get_current_user()也不会 返回一个用户对象。

答案 1 :(得分:1)

我看过很多类似的问题。

以不同的方式思考这条线是有帮助的......

user = users.get_current_user()

此行不会在您的浏览器中搜索高低,并缓存并检索任何信息并将其放入一个不错的用户对象中;它只是检查用户是否使用users类登录到应用程序。这意味着如果您没有用户类登录用户,则这行代码可能无法按照您的意愿执行。

通常应遵循get_current_user()方法的重要代码:

if user:
        greeting = ('Welcome, %s! (<a href="%s">sign out</a>)' %
                    (user.nickname(), users.create_logout_url('/')))
    else:
        greeting = ('<a href="%s">Sign in or register</a>.' %
                    users.create_login_url('/'))

self.response.out.write('<html><body>%s</body></html>' % greeting)

答案 2 :(得分:0)

我相信,你肯定会导入这个,

来自google.appengine.api的

导入用户

而且,您是否真的在登录时验证了django的“用户”模型?