1

这是我的代码

 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 。

我该如何解决?

4

3 回答 3

1

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

即使您在某处登录谷歌, users.get_current_user() 也不会返回用户对象。

于 2012-07-07T09:57:52.167 回答
1

我见过很多类似的问题。

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

用户 = 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)
于 2014-12-14T18:08:29.063 回答
0

我相信,你肯定进口了这个,

从 google.appengine.api 导入用户

而且,你真的在​​登录时验证了 django 的“用户”模型吗?

于 2012-07-07T10:00:01.843 回答