简单入门Google App Engine的教程(简单入门英文rap)(简单入门吉他谱)

访客 102 0

 

在本文中,我们将通过一个简单的例子向大家介绍如何创建一个简单的App Engine程序。首先,让我们来了解一下Google App Engine。

Google App Engine的介绍

Google App Engine是一个强大的开发平台,它提供了一整套开发组件,让用户能够轻松地在本地构建和调试网络应用。而后,用户可以将这些应用部署到Google强大的基础设施上,并根据应用所承受的负载自动进行扩展,免去了对应用和服务器等维护工作的烦恼。此外,Google App Engine还提供丰富的免费额度和灵活的资费标准。目前支持Java和Python这两种开发语言,并为它们提供基本相同的功能和API。

例子

这个例子非常简单,就是提交一个关于blog的表格,并将这个表格存储到App Engine的Datastore中。如果大家对源代码感兴趣,可以通过这个地址下载。本文将主要关注Python版App Engine,Java版App Engine不在本文的讨论之列。

搭建环境

这个过程主要包括以下三个步骤,其中第三步是可选择的:

    1. 安装Python的最新稳定版的运行时(Runtime),下载地址。有三个注意点:其一,Linux系统应该自带Python;其二,在Windows上安装好Python之后,需要在系统Path上加入Python的目录;其三,App Engine上应用服务器版本为2.6.5,所以请不要在项目在加入Python 2.6.5版之后引入的特性。
    2. 安装App Engine的SDK,下载地址。有两点需要注意:其一在Windows上安装好App Engine的SDK之后,也需要在系统Path上加入SDK的目录;其二是在Linux上,无需安装App Engine的SDK,只需将其解压缩,并放置在合适的目录即可。
    3. 安装Eclipse和Pydev插件,这步对那些只是想尝试一下App Engine的读者而言,是可选的,但是由于Eclipse成熟的开发环境,在加上Pydev自带的代码加色、自动提示和强大的调试,并且Pydev更是在其1.4.6版上加入了完整地对Google App Engine的支持,所以对那些准备开发App Engine程序的读者而言,则是必须的,如果想了解进一步信息,请点击此。

 

尽管对Python不熟悉并不会影响读者对本文的理解,但如果想深入学习Python,可以点击这里阅读《Dive Into Python》的中文版。此外,我个人推荐使用Linux作为App Engine的开发平台,因为它自带许多工具和完善的命令行界面。

项目初始化

App Engine SDK附带了一个名为“new_project_template”的项目模板,该模板包含三个文件:

    1. app.yaml:这个文件是整个项目的配置文件,比较类似Java Web项目中的web.xml文件。
    2. main.py:这个Python脚本是App Engine的“Hello World”文件,主要是演示如何处理最基本的Web请求。
    3. index.yaml:这个文件里面设定项目所创建的数据模型的索引,要注意的是,这个文件一般由App Engine系统自动维护,当App Engine调试或者部署应用的时候,其会分析应用所包含数据模型,来确定需不需给数据添加新的索引。

 

我们可以通过复制这个项目模板来初始化项目,接下来,将逐步编辑和创建各个文件,其中第一个被编辑的是app.yaml。

编辑app.yaml

正如前面提到的,app.yaml是整个项目的核心配置文件。它使用了.yaml作为后缀,这表示该文件是基于易读性极强的YAML语言编写的。相比XML,YAML具有更好的可读性,并且支持更多种类的数据类型。下面展示了一个已经编辑好的app.yaml示例。

应用程序: 示例 版本: 1 运行时环境: Python API 版本: 1

处理程序: - URL:/.* - 脚本:main.py

代码1:app.yaml

在app.yaml文件中,您可以主要配置以下参数:

    1. 应用名:对应的位置是“application”,其是用来设置整个项目的名字,在本地调试时,项目名可以是任意的字符串,但当部署这个项目到云端App Engine平台时,需求确保应用名和之前在App Engine管理界面上新建的应用名一致,所以这时应用名需要是全App Engine唯一的,不能与其他人创建的项目的名字有冲突。
    2. 项目版本号:对应的位置是“version”,用来配置应用的版本号,可以通过它来对应用进行版本管理。由于本例是新创建的,所以其版本号是1。
    3. 运行时:对应的位置是“runtime”,用来设定项目的开发语言,现有的项目有Python和Java两种开发语言可供选择,由于本例是使用python的,所以在此填入“python” 。
    4. API版本号:对应的位置是“api_version”,指的是使用的App Engine API的版本号,目前为1。
    5. 处理Web请求的类:对应的位置是“handlers”,这部分配置了URL和Python脚本之间对应的关系,意味着,当App Engine收到一个Web请求时,它会根据其URL来调用相应的脚本,在上面这个例子中,当URL为“/.*“的情况下,会调用main.py来处理。

 

创建HTML文件

以下是index.html的代码:

App Engine Demo Article Title:
Keywords:

index.html的代码2

这是例子对应的HTML页面,其主要由两个文本框和一个Textarea组成,来让用户输入Blog的文章名、关键字和内容,当用户输入完这三个数据之后,通过点击”提交“按钮,来将刚输入的数据Post给后台的服务器端,并由与URL”/“对应的Python脚本来进行处理,也就是上面的”main.py“

编写数据库代码

请注意,以下是我们的最新产品介绍:

请注意,以下是我们的最新产品介绍:

在介绍数据库代码的示例之前,我先向大家介绍一下App Engine的实体模型和数据类型。

实体模型

App Engine主要数据模型被称为”实体模型“,一个实体由一个主键和一组属性组成,实体的模型是通过继承Model类来实现,而且每个属性可在多个数据类型中进行选择。

数据类型的表达方式可以进行优化。

主要的基本数据类型包括以下几种:字符串(String)、基于字节的字符串(ByteString)、布尔值(Boolean)、整数(Integer)、浮点数(Float)、日期时间(DateTime)、列表(List)、字符串列表(StringList)、文本内容(Text),二进制块 (Blob)以及用于表示实体之间关系的参考类型 (Reference)。

用户可以通过继承Expando类来创造一种全新的数据类型,这个数据类型不仅限于基本的数据类型。

请注意,以下是我们的最新产品介绍:

请注意,以下是我们的最新产品介绍:

博客表的结构

以下是关于例子中所使用的Blog表结构的表格:

属性名类型titleString(字符串)tagsStringList(字符串列表)contentText(文本)

表1. Blog表的结构 下面是关于Blog表结构的详细信息:

下面是创建Blog表的blogdb.py脚本的代码,该表共包含三个字段:title属性为字符串类型,tags属性为字符串列表类型,content属性为文本类型。

import db from google.appengine.ext

class Blog(db.Model): title = db.StringProperty() tags = db.StringListProperty() content = db.TextProperty()

def save(self, _title, _tags, _content): blog = Blog() blog.title = _title blog.content = _content if _tags: blog.tags = _tags.split( ) else: blog.tags = [] blog.put()

```html

代码3. blogdb.py

```

这个脚本主要由两部分组成。首先,通过继承db.Model类创建了一个名为Blog的实体模型,并声明了title、tags和content三个属性。其次,定义了一个名为“save”的方法。在该方法中,首先创建一个新的Blog实体,然后将输入的_title、_tags和_content这三个参数插入到新创建的Blog实体中,并使用该实体的put方法将其保存到数据库中。其他类可以通过调用Blog类中的save方法来存储与Blog相关的数据。

请注意,以下是我们的最新产品介绍:

请注意,以下是我们的最新产品介绍:

添加Web处理方法

在这个示例中,我们需要添加用于处理两个Web请求的代码。首先是用于显示index.html页面的代码,也就是处理访问URL“/”的GET请求。其次是保存用户在index.html上输入的Blog数据,即处理访问URL“/”的POST请求。下面展示了经过添加上述两个逻辑后main.py文件中的代码:

请注意,以下是我们的最新产品介绍:

请注意,以下是我们的最新产品介绍:

from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app
from google.appengine.ext.webapp import template
import os
import cgi
from blogdb import Blog
import db from google.appengine.ext

class Main(webapp.RequestHandler): def get(self): path = os.path.join(os.path.dirname(__file__), 'index.html') self.response.out.write(template.render(path, [])) def post(self): _title = cgi.escape(self.request.get('title'))

webapp.WSGIApplication([('/', Main)], debug=True) is the application.

def main():
    run_wsgi_app(application)

如果 __name__ == __main__: main()

```html

代码4. main.py

```
 

main.py的代码可以分为三个部分,从上到下依次是:

    1. Get方法:这个方法主要通过python os模块的方法来读取index.html,并将读取好的index.html这个文件的数据通过HTTP Response流来发送给浏览器端,这样会在客户的浏览器上显示index.html。
    2. Post方法:这个方法会从输入的HTTP Request流中获取title、tags和content的输入数据,并调用Blog这个实体模型的save方面来保存,之后,将返回“Save Successfully“的消息给客户端。
    3. 注册Main类:在代码中通过初始化webapp.WSGIApplication这个类,来将Main这个类和URL”/“对应,比如,客户端发送Get请求给URL”/“,系统会调用Main类的Get的方法来处理这个请求,需要注意的是,在这里设定URL和类的对应关系是在app,yaml中的设定之后的进一步设置。

 

代码部分已经完成,接下来将详细介绍如何进行项目的测试和部署。

 

测试和部署

主要分为以下三个步骤:

本地试验

可以这样改写: 使用SDK中的dev_appserver.py脚本来启动本地开发环境。具体命令格式为“dev_appserver.py sample”,其中“sample”代表项目的名称。如果安装了Pydev插件,还可以在Eclipse上启动本地开发环境的调试模式。成功启动环境后,您可以通过访问http://localhost:8080来测试项目的基本功能。

创建应用

简单入门Google App Engine的教程(简单入门英文rap)(简单入门吉他谱)-第1张图片-谷歌商店上架

图1.  My Applications

请注意,以下是我们的最新产品介绍:

要进入“Create an Application”的界面,您可以在App Engine的管理界面(https://appengine.google.com/)中点击“My Applications”下的“Create An Application”按钮。

简单入门Google App Engine的教程(简单入门英文rap)(简单入门吉他谱)-第2张图片-谷歌商店上架

2. 创建一个应用程序

之后在”Create an Application“这个界面中,在”Applcation Identifier“这个文本框中输入应用的名字或者ID(必须是全App Engine唯一的),在”Application Title“的文本框中输入应用的全称,之后点击”Create Applcation“这个按钮在App Engine上创建这个应用。

应用发布

使用SDK中appcfg.py这个脚本将应用部署到App Engine这个平台上,具体命令格式为”appcfg.py update sample/“,在这里“sample/”代表项目所在的目录,部署之后,可以通过App Engine的管理界面来访问和管理应用。

 

参考文献:

    1. YAML 简介。

标签: 谷歌商店上架 项目 代码

发表评论 (已有0条评论)

还木有评论哦,快来抢沙发吧~