我认为我使用的用户API错误:
class BaseHandler(webapp.RequestHandler):
user = users.get_current_user()
def header(self, title):
if self.user:
render('Views/link.html', self, {'text': 'Log out', 'href': users.create_logout_url('/')})
else:
render('Views/link.html', self, {'text': 'Log in', 'href': users.create_login_url('/')})
link.html:
<p>
<a href="{{href}}">{{text}}</a>
</p>
有时它起作用,有时却不起作用。我将连续十次单击“注销”链接,然后重新加载页面,它将重定向到
'/'
页面。然后,神秘地,我将登出的其中一次。基本上以相同的方式登录失败。这里发生了什么?已解决-这有效:
class BaseHandler(webapp.RequestHandler):
def __init__(self):
self.user = users.get_current_user()
def header(self, title):
if self.user:
render('Views/message.html', self, {'msg': "Welcome, %s" % self.user.nickname()})
render('Views/link.html', self, {'text': 'Log out', 'href': users.create_logout_url('/')})
else:
render('Views/link.html', self, {'text': 'Log in', 'href': users.create_login_url('/')})
看起来我可以通过在函数中将其称为
self.var_name
来获得实例变量,但永远不要在类级别上声明它们。奇。 最佳答案
您将users.get_current_user()
的结果存储在名为user
的变量中,但是if
会检查self.user
的值,该值不是同一变量。
使用相同的变量名,都应该没问题!