这是我的代码
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。
我该如何解决?
答案 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的“用户”模型?