我认为我使用的用户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的值,该值不是同一变量。

使用相同的变量名,都应该没问题!

07-26 05:59