中文版Google App Engine入门指南(3)

使用模板

HTML里面嵌入在编程代码里是非常杂乱的,所以我们最好使用一个独立的文件来专门处理HTML代码,以便于将界面显示和数据获取的过程相互独立出来。有很多使用Python实现的模板系统,比如: EZT, Cheetah,ClearSilver, Quixote,  Django 等等.你可以选择这里面的任意一个。

为了大家方便,  webapp 模块默认包含了Django的模板系统.Django模板是Google App Engine的一部分,所以你不需要单独进行绑定就可以直接使用。

使用 Django 模板

首先在 helloworld/helloworld.py中引入template模块:

import os

from google.appengine.ext.webapp import template

重新编写 MainPage handler:

class MainPage(webapp.RequestHandler):

  def get(self):

    greetings_query = Greeting.all().order('-date')

    greetings = greetings_query.fetch(10)

if users.get_current_user():

      url = users.create_logout_url(self.request.uri)

      url_linktext = 'Logout'

    else:

      url = users.create_login_url(self.request.uri)

      url_linktext = 'Login'

template_values = {

      'greetings': greetings,

      'url': url,

      'url_linktext': url_linktext,

      }

path = os.path.join(os.path.dirname(__file__), 'index.html')

    self.response.out.write(template.render(path, template_values))

最后, 在 helloworld 的目录下面创建一个新文件index.html, 内容如下:

<html> <body> {% for greeting in greetings %} {% if greeting.author %} <b>{{ greeting.author.nickname }}</b> wrote: {% else %} An anonymous person wrote: {% endif %} <blockquote>{{ greeting.content|escape }}</blockquote> {% endfor %} <form action="/sign" method="post"> <div><textarea name="content" rows="3" cols="60"></textarea></div> <div><input type="submit" value="Sign Guestbook"></div> </form> <a href="{{ url }}">{{ url_linktext }}</a> </body></html>

刷新浏览器,然后查看网页上的变化。

template.render(path, template_values) 接受输入一个文件路径和一个dictionary类型的数据字典,并输出一段经过处理的文本。这个模板使用了Django模板的语法.在模板文件中可以直接使用引入的值,并且可以使用这些对象的属性。在许多实际例子里,你可以直接使用GAE数据模型,并访问他们的属性。

提示: App Engine 应用程序对所有上传的文件的访问权限都是只读的,所以对文件的写操作是被禁止的;当前工作路径是应用程序的根目录,所以 index.html 的路径可以简单写成"index.html"。

想要了解更多关于Django模板引擎的内容,参见 the Django 0.96 template documentation。

使用静态文件

和其他的web发布环境不同,Google App Engine 不支持直接将应用目录下的文件直接输出的功能。也就是说,如果我们将模板文件取名为 index.html, 我们并不能直接通过URL /index.html来访问这个文件。但是现在有非常多的应用需要我们提供文件直接输出的功能,例如图片,CSS,JavaScript等等,这些类型的文件都需要直接输出到客户端。GAE提供了这样的功能,你不需要编写自己的处理模块来进行额外的处理。

使用静态文件

编辑helloworld/app.yaml 修改里面的代码:

application: helloworldversion: 1runtime: pythonapi_version: 1handlers:- url: /stylesheets static_dir: stylesheets- url: /.* script: helloworld.py

新加的handlers 部分定义了两个URL处理模块,其中 /stylesheets开头的所有URL都定义并转向了静态文件夹stylesheets ,如果在这个文件夹中发现了请求的文件,就会直接把这个文件的内容返回给客户端;而其他请求都会由helloworld.py 脚本进行处理。

默认情况下,App Engine 按照文件名后缀处理静态文件,如 .css 结尾的文件就会使用MIME类型text/css。

GAE按照在 app.yaml定义的顺序对URL进行处理。在这个例子里 /stylesheets 将先于 /.* 对路径进行处理。

想要了解更多在 app.yaml中的选项,请查看 the app.yaml reference。

下面,我们创建 helloworld/stylesheets目录,并且在这个目录下创建一个新文件 main.css :

body { font-family: Verdana, Helvetica, sans-serif; background-color: #DDDDDD;}

最后,编辑 helloworld/index.html 插入如下几行:

<head> <link type="text/css" rel="stylesheet" href="/stylesheets/main.css" /> </head>

刷新并查看效果,新版本的程序使用了样式表。

上传你的程序

用户创建和管理GAE应用程序,都需要使用GAE控制台程序来进行。其中,用于上传的命令行工具叫做appcfg.py。

注意:  到目前为止,还没有办法删除已经发布的应用。这个功能会在稍后提供。在现在的预览测试阶段,每个用户可以注册3个应用程序ID,如果你不想使用你自己的应用程序ID,你可以仅仅读一下这一章,到你真正想发布自己的应用的时候再尝试。

注册应用程序

访问http://appengine.google.com/,使用你的Google帐号登录到App Engine管理平台。(如果你还没有Google帐号,请先申请一个)。

为了创建一个新的GAE应用,请点击按钮 "Create an Application" ,按照提示注册应用程序ID,应用程序ID的名字必须是唯一的。创建ID后,你就可以拥有一个http://application-id.appspot.com/这样的URL地址来访问你的WEB应用了.当然,如果你拥有自己的域名的话,也可以将其绑定到你自己的应用。

修改 app.yaml , 吧 application: 的值设置为你刚刚申请的应用程序ID。

上传你的Application

上传你的程序,使用下面的命令:

appcfg.py update helloworld/

按照提示,输入您自己的Google 用户名和密码。

现在你已经可以使用如下地址访问您刚刚上传的WEB应用了:

http://application-id.appspot.com

恭喜你!

你已经完成了这个教程的学习了.想要了解关于Google App Engine的更多相关内容,您可以继续查看the App Engine documentation。

时间: 2024-08-25 23:26:41

中文版Google App Engine入门指南(3)的相关文章

中文版Google App Engine入门指南(1)

本指南将介绍如何开发以及展示一个简单的Google App Engine项目.这个示例项目-一个用户留言簿-将会向你展示如何使用Google App Engine的多项服务,包括数据库服务和谷歌帐户服务. Google App Engine入门指南包括以下几个部分: 介绍编程环境 Hello, World! 使用webapp框架 使用Google帐户服务 用webapp处理表单 使用数据库存储 使用模板 使用静态文件 上传你的程序 介绍 欢迎来到Google App Engine!创建一个App

中文版Google App Engine入门指南(2)

使用webapp框架 CGI标准是很简单的,但是要把所有的代码一一写出来还是很繁重的.WEB app框架帮你解决了这些具体问题,这样你就可以将你的精力集中在你的程序的功能上了.Google App Engine支持所有用Python写的关于CGI的网站框架(包括使用CGI adaptor的 WSGI-compliant框架),包括 Django,CherryPy, Pylons, 以及 web.py..你只需要吧这个框架的代码复制到你的程序目录下就可以使用这个框架了. App Engine包括了

Google App Engine 入门:开发环境

Google 提供了一个Google App Engine 软件开发包(SDK),用于让开发者进行网站应用程序开发或上传已经完成的应用. 这个开发包包含: 一个web服务程序,用来模拟App Engine应用环境 一个本地版的数据存储方案 本地模拟的Google帐号集成 支持使用Api来分析URL和发送邮件 这个开发包可以运行在所有安装了Python2.5的机器上,并且支持Windows, Mac OS X 和Linux系统. 因为这个开发包是以Python2.5为基础的,所以你必须先要在你的机

菜鸟玩GAE(Google App Engine)完全指南,互联网营销

GAE是什么? 从实用的角度说是GAE可以提供我们稳定的免费网站空间,空间支持语言是python.java,数据库是google专有的数据库,数据库和空间可以免费使用1G,超过了1G就要买了,还提供Google的带宽,这个带宽约可以支撑一月500万次访问请求,超过500万次就要买了--对于一般网站这免费的资源就足够了,另外GAE还支持域名绑定,就相当于个人买的虚拟空间一样. 即使你目前对GAE不了解,也不会python或java,也能轻易使用GAE空间,利用别人编好的基于GAE的程序建立起自己的

Google App Engine - 5G支持Python免费虚拟主机

Google App Engine是Google推出的免费虚拟主机空间,其实这比一般虚拟主机强悍的多,你可以利用Google App Engine工具来开发网站或制作网络应用程序,Google会在自己的庞大服务器集群上为你提供空间.带宽.资源等.目前Google App Engine为每个用户提供10个Application(简称App),每个App有500M免费空间,每个App限制1000个文件,单个文件1M以内,每天流量20G.每个App提供免费二级域名1个,同时也可绑米.目前还仅支持Pyt

Google App Engine提供5GB免费空间支持虚拟主机

Google App Engine是Google推出的免费虚拟主机空间,其实这比一般虚拟主机强悍的多,你可以利用Google App Engine工具来开发网站或制作网络应用程序,Google会在自己的庞大服务器集群上为你提供空间.带宽.资源等.目前Google App Engine为每个用户提供10个Application(简称App),每个App有500M免费空间,每个App限制1000个文件,单个文件1M以内,每天流量20G.每个App提供免费二级域名1个,同时也可绑米.目前还仅支持Pyt

体验Google云计算之Google App Engine

基于 Google 的基础架构运行您的网络应用程序.Google App Engine 使您可以在支持 Google 应用程序的同一可扩展系统上构建网络应用程序. 无需汇编.Google App Engine 提供完全集成的应用程序环境. 它易于扩展.Google App Engine 使构建可扩展的应用程序(从一个用户增加至数百万个用户)变得轻松,且无需为基础架构烦恼. 它易于入门.每个 Google App Engine 应用程序都可使用多达 500MB 的持久存储空间以及可支持每月 500

用Groovy编写Google App Engine应用

Google的Google App Engine 云计算平台现在已 经支持了除了Python以外的其他的语言:即Java和Groovy! 现在,你可以通过Groovy高效的编写你的Google App Engine 应用了. 几星期以前,SpringSource Groovy团队和Google App Engine Java 团队紧密携手,仔细的处理了大 量的细节问题,以确保这门获奖的颇为流行的基于JVM的动态语言--Groovy可以很好的运行在这个精彩的 平台上.他们针对那些限制严格以及有很强

Amazon EC2和Google App Engine,谁是最后的赢家

Amazon EC2和Google App Engine,两大服务平台,谁能更胜一筹,我打算从三个角度来对比这两大云计算平台:技术,业务和未来发展趋势,本文是技术方面的对比,ok,准备好咖啡,我们开始吧! 如果按平台类型来分,大家可能已经知道Amazon EC2属于IaaS(基础设施即服务),Google App Engine属于PaaS(平台即服务).不过,如果Amazon EC2给你一个安装了操作系统的平台,你就可以自己安装应用程序,并且使用AMI(Amazon Machine Image)