Я использую Google App Engine Python Federated Login, который использует OpenID, чтобы пользователи могли входить в систему с существующими учетными записями. Я хочу, чтобы пользователь был направлен на страницу, где он вводит дополнительную информацию о себе, такую как имя пользователя и краткую биографию. Прямо сейчас после входа в систему пользователи направляются к этому обработчику, а затем, если у них есть имя пользователя, я хочу, чтобы они оставались на этой странице, в противном случае я хочу, чтобы они были перенаправлены в / профиль
class Tester(BlogHandler):
def get(self):
global visits
logout = users.create_logout_url(self.request.uri)
user = users.get_current_user()
if user:
currentregistereduser = None
try:
user_db_qry = User.query(User.theid == user.federated_identity())
user_db_list = user_db_qry.fetch(1)
#this is the line that is causing the error
currentregistereduser = user_db_list[0]
except IndexError:
#I could do something here to fix it but I am not sure what
if currentregistereduser:
if not currentregistereduser.username:
self.redirect("/profile")
else:
self.render("tester.html", user=user, logout=logout)
Проблема в том, что я получаю IndexError, когда пытаюсь выполнить currentregistereduser = user_db_list[0] для нового пользователя, но он отлично работает для существующего пользователя. Кто-нибудь знает, что может быть причиной этого? Я должен сделать то же самое на моей странице /profile, чтобы идентифицировать пользователя, поэтому я не сильно помогу, просто перенаправив его туда.
User
в качестве имени модели для своих пользователей? 17.10.2012