我们来使用用户服务个性化此应用程序的问候语。
再次编辑 helloworld/helloworld.py
from google.appengine.api import users
from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app
class MainPage(webapp.RequestHandler):
def get(self):
user = users.get_current_user()
if user:
self.response.headers[ ' Content-Type ' ] = ' text/plain '
# self.response.out.write('Hello, webapp World!')
self.response.out.write( ' Hello, ' + user.nickname())
else :
self.redirect(users.create_login_url(self.request.uri))
application = webapp.WSGIApplication([( ' / ' , MainPage)],debug = True)
def main():
run_wsgi_app(application)
if __name__ == " __main__ " :
main()
在您的浏览器中重新加载该页面。应用程序会将您重定向到适用于测试应用程序的 Google 登录页面的本地版本。您可以在该屏幕中输入自己喜欢的任何用户名,应用程序会基于该用户名发现伪造 User
对象。
当应用程序在 App Engine 上运行时,用户会被定向到 Google 帐户登录页面,然后在成功登录或创建帐户后重定向到应用程序。
我们来仔细了解一下用户 API 的新内容:
user
=
users.get_current_user()
如果用户已登录到您的应用程序,get_current_user()
将为用户返回 User
对象。否则,它会返回 None
。
if user:
self.response.headers[
'
Content-Type
'
]
=
'
text/plain
'
self.response.out.write(
'
Hello,
'
+
user.nickname())
如果用户已登录,将使用与用户的帐户关联的昵称显示个性化的消息。
else :
self.redirect(users.create_login_url(self.request.uri))
如果用户尚未登录,则通知webapp
将用户的浏览器重定向到 Google 帐户登录屏幕。这种重新定位包括本页面的网址 (self.request.uri
),因
此用户登录或注册了新帐户后,Google 帐户登录机制会引导用户返回到此处。