Google App Engine 入门:使用模版文件
(本文译自:Google App Engine Getting Started)
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 处理过程:
class MainPage(webapp.RequestHandler): def get(self): greetings = Greeting.all().order(‘-date‘) 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数据模型,并访问他们的属性.
Tip: App Engine 应用程序对所有上传的文件的访问权限都是只读的,所以对文件的写操作是被禁止的;当前工作路径是应用程序的根目录,所以 index.html 的路径可以简单写成 "index.html".
想要了解Django模板的详细语法,请查看 the Django 0.96 template documentation.
接下来…
绝大多数web应用程序都会输出通过模板动态生成的HTML代码. 而大多数Web应用还需要处理静态文件,如:图像, CSS , JavaScript 脚本. 为了了提高效率, App Engine 对静态文件进行了特殊的处理.下一章,我们就会演示如果为这个应用添加CSS风格的支持.
下一章: 使用静态文件

2008-05-31 10:18
[…] 使用模版文件 学习使用模板文件来显示网页,让数据和页面分离,加快网站开发速度 […]
2008-07-23 03:21
15JiP4 gfb07yvt9d6t94wbtx63bgq7d