我认为我错误地使用了用户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>
有时它会起作用,有时却不起作用。我会连续10次点击“退出”链接,然后重新加载页面,它会将我重定向到'/'
页面。然后,神秘地,有一次我将被退出。登录失败的方式基本相同。这是怎么回事?
解决了 - 这有效:
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
来拥有实例变量,但从不在类级别上声明它们。奇
答案 0 :(得分:1)
您将users.get_current_user()
的结果存储在名为user
的变量中,但您的if
会检查self.user
的值,该值不是同一个变量。< / p>
使用相同的变量名称,一切都应该没问题!