- 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 - 原油操作
- TurboGears - 数据网格
- TurboGears - 分页
- TurboGears - 管理员访问
- 授权与认证
- TurboGears - 使用 MongoDB
- TurboGears - 脚手架
- TurboGears - 挂钩
- TurboGears - 编写扩展
- TurboGears - 可插拔应用
- TurboGears - 安静的应用程序
- TurboGears - 部署
- TurboGears 有用资源
- TurboGears - 快速指南
- TurboGears - 有用的资源
- TurboGears - 讨论
TurboGears - 服务模板
事件虽然可以将 HTML 内容返回到浏览器,但对于更高级的输出,始终首选使用模板引擎。在变速箱“快速启动”的全栈项目中,Genshi 被启用为默认模板渲染器。然而,在最小的应用程序中,需要安装并启用 Genshi(或任何其他模板引擎,例如 jinja)。Genshi 模板引擎允许用纯 xhtml 编写模板并验证它们以在编译时检测问题并防止提供损坏的页面。
模板通过使用点符号来引用。在我们的Hello项目中,提供了一个templates目录来存储模板网页。因此,sample.html将被称为hello.templates.sample(未提及扩展名)。TurboGears 通过公开装饰器渲染此模板,并通过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 http://localhost:8080/sample,浏览器中将显示以下结果。
如上所述,字典对象作为参数集合发送到 Genshi 模板。该模板包含“占位符”,这些占位符动态地填充从控制器接收的参数。
让我们更改Sample()函数以将字典对象发送到示例模板。
@expose("hello.templates.sample") def sample(self,name): mydata = {'person':name} return mydata
在模板文件夹( templates\sample.html )中创建sample.html
<html> <head> <title>TurboGears Templating Example</title> </head> <body> <h2>Hello, my name is ${person}!.</h2> </body> </html>
在上面的 HTML 代码中,${person}是占位符。在浏览器中输入http://localhost:8080/sample?name=MVL作为 URL。该 URL 映射到根控制器中的sample()方法。它返回一个字典对象。这是通过模板目录中的链接模板页面 example.html 选择的。然后,网页中的 ${person} 被 MVL 替换。
还可以在控制器函数中访问 HTML 表单数据。HTML 表单用于发送表单数据。