Я думаю, что я использую API Users неправильно:Google App Engine: Пользователи 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
в функции, но никогда не объявляя их на уровне класса. Странный.
Действительно ли это один из GAE или dev-сервера? – prestomation
Это работает на сервере dev на моей машине. –
Вам нужно использовать firebug или какую-либо другую консоль разработки, чтобы увидеть, что происходит, когда вы нажимаете «выйти из системы». Он должен перенаправить вас в/_ah/..., который должен отправить заголовок Set-Cookie, чтобы очистить файл cookie, а затем перенаправить обратно в /. –