Google App Engine: пользовательский API действует странно - PullRequest
1 голос
/ 09 марта 2010

Я думаю, что неправильно использую 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 в функции, но никогда не объявляя их на уровне класса. Одд.

1 Ответ

1 голос
/ 09 марта 2010

Вы сохраняете результат users.get_current_user() в переменной с именем user, но затем ваш if проверяет значение self.user, которое не является той же переменной.

Используйте то же имя переменной, и все должно быть в порядке!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...