- TurboGears 教程
- TurboGears - 首页
- TurboGears - 概述
- TurboGears - 环境
- TurboGears - 第一个程序
- TurboGears - 依赖项
- TurboGears - 模板服务
- TurboGears - HTTP 方法
- Genshi 模板语言
- TurboGears - 包含
- TurboGears - JSON 渲染
- TurboGears - URL 层次结构
- TurboGears - Toscawidgets 表单
- TurboGears - 验证
- TurboGears - 闪现消息
- TurboGears - Cookie 和会话
- TurboGears - 缓存
- TurboGears - SQLAlchemy
- TurboGears - 创建模型
- TurboGears - CRUD 操作
- TurboGears - 数据网格
- TurboGears - 分页
- TurboGears - 管理员访问
- 授权与认证
- TurboGears - 使用 MongoDB
- TurboGears - 脚手架
- TurboGears - Hook
- TurboGears - 编写扩展
- TurboGears - 可插拔应用程序
- TurboGears - RESTful 应用程序
- TurboGears - 部署
- TurboGears 有用资源
- TurboGears - 快速指南
- TurboGears - 有用资源
- TurboGears - 讨论
TurboGears - 模板服务
虽然可以将 HTML 内容返回给浏览器,但对于更高级的输出,始终建议使用模板引擎。在 gearbox 快速启动的全栈项目中,Genshi 被启用为默认的模板渲染器。但在最小应用程序中,需要安装并启用 Genshi(或任何其他模板引擎,例如 Jinja)。Genshi 模板引擎允许使用纯 XHTML 编写模板,并在编译时验证它们以检测问题并防止提供损坏的页面。
模板使用点表示法引用。在我们的 Hello 项目中,提供了一个 templates 目录来存储模板网页。因此,sample.html 将被引用为 hello.templates.sample(未提及扩展名)。TurboGears 通过 expose 装饰器使用 tg.render_template() 函数将控制器方法链接到该模板。
公开的控制器函数返回一个 Python 字典对象。该字典对象又传递给链接的模板。模板中的占位符将用字典值填充。
首先,让我们显示一个包含纯 html 脚本的网页。由于我们不打算发送任何要解析到 HTML 脚本中的数据,因此公开的控制器返回一个空字典对象。
如何创建一个示例 HTML
我们的 sample.html 如下所示。确保将其存储在项目的 templates 目录中。
<html>
<head>
<title>TurboGears Templating Example</title>
</head>
<body>
<h2>Hello, Welcome to TurboGears!.</h2>
</body>
</html>
在 root.py 中添加 sample() 函数,并通过它公开 sample.html。
@expose("hello.templates.sample")
def sample(self):
return {}
启动 Web 服务器后,输入 URL https://:8080/sample,浏览器将显示以下结果。
如上所述,字典对象作为参数集合发送到 Genshi 模板。此模板包含“占位符”,这些占位符将使用从控制器接收的参数动态填充。
让我们更改 sample() 函数以将字典对象发送到 sample 模板。
@expose("hello.templates.sample")
def sample(self,name):
mydata = {'person':name}
return mydata
在 templates 文件夹中创建 sample.html(templates\sample.html)
<html>
<head>
<title>TurboGears Templating Example</title>
</head>
<body>
<h2>Hello, my name is ${person}!.</h2>
</body>
</html>
在上面的 HTML 代码中,${person} 是占位符。在浏览器中输入 URL https://:8080/sample?name=MVL。此 URL 映射到我们根控制器中的 sample() 方法。它返回一个字典对象。这将由 templates 目录中链接的模板页面 sample.html 获取。然后,网页中的 ${person} 将被 MVL 替换。
也可以在控制器函数中访问 HTML 表单数据。HTML 表单用于发送表单数据。