GAE--python使用入门

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

简介欢迎使用GoogleAppEngine!创建AppEngine应用程序非常简单,只需几分钟时间,而且可以免费开始使用:立即上传您的应用程序并与用户共享,不需要支付费用也不需要承担什么义务。GoogleAppEngine应用程序可用Java或Python编程语言编写。本辅导手册涉及Python。如果您更习惯使用Java来构建应用程序,请参阅入门指南:Java。在本辅导手册中,您将学习如何:使用Python构建AppEngine应用程序使用“webapp”网络应用程序框架将AppEngine数据存储区和Python建模API配合使用将AppEngine应用程序与Google帐户集成以进行用户验证在您的应用程序中使用Django模板将应用程序上传到AppEngine在本辅导手册结束前,您将实现一个可运行的应用程序:可让用户发布消息到公共留言板的简单留言簿。下一步...要开始开发GoogleAppEngine应用程序,请下载并安装AppEngine软件开发工具包。继续转至开发环境。开发环境使用AppEnginePython软件开发套件(SDK)为GoogleAppEngine开发和上传Python应用程序。PythonSDK包含模拟AppEngine环境的网络服务器应用程序,其中包括数据存储区的本地版本、Google帐户,以及使用AppEngineAPI从您的计算机直接抓取网址和发送电子邮件的功能。PythonSDK可在装有Python2.5的任意计算机上运行,并且有适合Windows、MacOSX和Linux的版本。如有必要,请从Python网站下载和安装适合您的平台的Python2.5。MacOSX10.5Leopard用户已安装Python2.5。下载AppEngineSDK。按照下载页面中的说明在计算机上安装SDK。对于本教程,您将使用两个来自SDK的命令:dev_appserver.py,开发网络服务器appcfg.py,用于将您的应用程序上传到AppEngine对于Windows用户:Windows安装程序会将这些命令置于命令路径中。安装后,您可以从命令提示符运行这些命令。对于Mac用户:GoogleAppEngine启动程序会将这些命令包含在应用程序中。您可以通过从“GoogleAppEngineLauncher”菜单中选择“MakeSymlinks...”将这些命令置于命令路径中。或者,您可以使用启动程序来运行开发网络服务器并部署您的应用程序,而不必运行命令。如果您使用SDK的Zip归档版本,您将在google_appengine目录中找到这些命令。下一步...通过本地开发环境,您可以在向外界推出AppEngine应用程序之前对其进行全面的开发和测试。让我们写一些代码。继续转至Hello,World!Hello,World!PythonAppEngine应用程序使用CGI标准与网络服务器通信。当服务器收到来自应用程序的请求时,它使用环境变量和标准输入流(对于POST数据)中的请求数据运行应用程序。为了做出响应,应用程序会向标准输出流写入响应,包括HTTP标头和内容。让我们开始构建显示简短消息的小型应用程序。创建简单请求处理程序创建名为helloworld的目录。该应用程序的所有文件都驻留在该目录中。在helloworld目录中,创建名为helloworld.py的文件,并赋予其以下内容:print'Content-Type:text/plain'print''print'Hello,world!'该Python脚本会对带有HTTP标头(描述内容、空行和消息Hello,world!)的请求作出响应。创建配置文件AppEngine应用程序中包含名为app.yaml的配置文件。除其他内容外,文件还介绍了哪个处理程序脚本应用于哪个网址。在helloworld目录中,创建名为app.yaml的文件,内容如下:application:helloworldversion:1runtime:pythonapi_version:1handlers:-url:/.*script:helloworld.py从上到下,该配置文件描述了有关该应用程序的以下内容:应用程序标识符为helloworld。当您在用AppEngine注册应用程序的最后步骤时,您将选择唯一标识符,然后更新该值。在开发过程中,该值可以是任意内容。暂时将其设置保留为helloworld。这是该应用程序代码的版本号1。如果您在上传新版本的应用程序软件之前调整了该内容,AppEngine将会保留之前的版本,并可让您使用管理控制台回滚到之前的版本。该代码运行于python运行时环境中,版本为“1”。将来可能支持其他运行时环境和语言。对路径与正则表达式/.*(所有网址)匹配的网址的所有请求应由helloworld.py脚本进行处理。该文件的语法为YAML。有关配置选项的完整列表,请参阅app.yaml参考。测试应用程序用处理程序脚本和配置文件将每个网址映射到处理程序后,应用程序就完成了。您可以立即用AppEngineSDK附带的网络服务器对其进行测试。用以下命令启动网络服务器,向其提供到helloworld目录的路径:google_appengine/dev_appserver.pyhelloworld/网络服务器正在运行,在端口8080监听请求。通过在网络浏览器中访问以下网址测试应用程序:有关运行开发网络服务器的详细信息(包括如何更改它使用哪个端口),请参阅开发网络服务器参考,或使用--help选项运行命令。重复开发您可以在开发应用程序时保持网络服务器运行。网络服务器将自动查看您源文件中的更改,并在必要时重新加载它们。立即尝试:保持网络服务器运行,然后编辑helloworld.py以将Hello,world!更改为其他内容。重新加载以查看更改。要关闭网络服务器,请确保终端窗口处于活动状态,然后按Control-C(或您的控制台上相应的“break”键)。您可以使网络服务器在本教程的其余部分时保持运行。如果您需要停止它,可以通过运行以上命令再次重新启动它。下一步...您现在完成了AppEngine应用程序!您可以立即部署该简单问候并与全球用户共享。但是在部署之前,让我们考虑使用网络应用程序框架来更轻松地添加功能。继续转至使用Webapp框架。使用webapp框架CGI标准很简单,但是手动编写使用该标准的所有代码将非常麻烦。网络应用程序框架可以为您处理这些琐碎的事情,以便您可以将开发精力集中在应用程序的功能上。GoogleAppEngine支持用纯Python(符合CGI)编写的任何框架(以及使用CGI适配器的与WSGI兼容的框架),包括Django、CherryPy、Pylons和web.py。可以通过将应用程序代码复制到应用程序目录来捆绑所选框架和应用程序代码。AppEngine包括其自己的简单网络应用程序框架,称为webapp。webapp框架已安装在AppEngine环境和SDK中,因此无需将其与应用程序代码捆绑即可使用。我们将使用webapp学习本教程的剩余部分。Hello,webapp!一个webapp应用程序包含三部分:一个或多个RequestHandler类,用于处理请求和构建响应一个WSGIApplication实例,按照网址将收到的请求发送给处理程序一个主要例行程序,用于使用CGI适配器运行WSGIApplication现在让我们将友好的问候语重新编写为一个webapp应用程序。编辑helloworld/helloworld.py,并将其内容替换为以下内容:fromgoogle.appengine.extimportwebappfromgoogle.appengine.ext.webapp.utilimportrun_wsgi_appclassMainPage(webapp.RequestHandler):defget(self):self.response.headers['Content-Type']='text/plain'self.response.out.write('Hello,webappWorld!')application=webapp.WSGIApplication([('/',MainPage)],debug=True)defmain():run_wsgi_app(application)if__name__==__main__:main()在浏览器中重新加载,以了解正在使用的新版本。(如果已停止您的网络服务器,请通过运行Hello,World!中介绍的命令来重新启动。)webapp的功能webapp模块位于google.appengine.ext包中。SDK以及生产运行时环境中均提供该模块。该代码定义一个映射到根网址(/)的请求处理程序MainPage。当webapp收到网址/的HTTPGET请求时,它会将MainPage类实例化并调用该实例的get方法。在该方法中,可以使用self.request获得有关请求的信息。通常情况下,该方法在self.response上设置属性以准备响应,然后退出。webapp将基于MainPage实例的最终状态发送响应。应用程序本身由webapp.WSGIApplication实例表示。如果处理程序遇到错误或引发未捕捉的异常,则传递给其构造函数的参数debug=true将通知webapp将堆栈记录打印到浏览器输出。您可能需要从应用程序的最终版本中删除此选项。函数run_wsgi_app()使用WSGIApplication实例(或其他与WSGI兼容的应用程序对象)并在AppEngine的CGI环境中运行此实例。run_wsgi_app()与Python标准库中的wsgiref模块提供的从WSGI到CGI的适配器相似,但前者包含其他几个功能。例如,它可自动检测应用程序是在开发服务器中运行还是在AppEngine上运行,如果在开发服务器上运行,则在浏览器中显示错误。我们将在本教程的后面使用webapp的另外几个功能。有关webapp的详细信息,请参阅webapp参考。下一步...框架可以使网络应用程序的开发更简单、更快速以及发生更少的错误。webapp只是这些可用于Python的框架中的一个。既然我们要使用框架,那就添加一些功能。继续转至使用用户服务。使用用户服务GoogleAppEngine提供基于Google基础架构的多种有用服务,可由使用SDK随附的库的应用程序访问。其中一种服务是用户服务,可使应用程序与Google用户帐户集成。使用用户服务,用户可以使用已有的Google帐户登录到您的应用程序。我们来使用用户服务个性化此应用程序的问候语。使用User再次编辑helloworld/helloworld.py,并将其内容替换为以下内容:fromgoogle.appengine.apiimportusersfromgoogle.appengine.extimportwebappfromgoogle.appengine.ext.webapp.utilimportrun_wsgi_appclassMainPage(webapp.RequestHandler):defget(self):user=users.get_current_user()ifuser:self.response.headers['Content-Type']='text/plain'self.response.out.write('Hello,'+user.nickname())else:self.redirect(users.create_login_url(self.request.uri))application=webapp.WSGIApplication

1 / 18
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功