- 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 - 钩子
- TurboGears - 编写扩展
- TurboGears - 可插拔应用程序
- TurboGears - RESTful 应用程序
- TurboGears - 部署
- TurboGears 有用资源
- TurboGears - 快速指南
- TurboGears - 有用资源
- TurboGears - 讨论
TurboGears - 包含
另一个 XML 文档(尤其是 HTML 文档)的内容可以通过在当前文档中使用包含标记来包含。为了启用此类包含,必须在 HTML 文档的根元素中声明 XInclude 命名空间。
<html xmlns = "http://www.w3.org/1999/xhtml" xmlns:xi = "http://www.w3.org/2001/XInclude >
上述声明指定 include 指令包含“xi”前缀。要在当前文档中添加另一个 html 页面的内容,请按如下方式使用 xi:include 指令:
<xi:include href = "somepage.html" />
在以下示例中,root.py 包含 include() 控制器,它公开 include.html。
from hello.lib.base import BaseController from tg import expose, request class RootController(BaseController): @expose('hello.templates.include') def include(self): return {}
标题和页脚 HTML
在 include.html 中,声明了 include 命名空间,并添加了 heading.html 和 footer.html 的内容。以下是模板\include.html 的 HTML 脚本:
<html xmlns = "http://www.w3.org/1999/xhtml" xmlns:xi = "http://www.w3.org/2001/XInclude"> <head> <title>TurboGears Templating Example</title> </head> <body> <xi:include href = "heading.html" /> <h2>main content </h2> <xi:include href = "footer.html" /> </body> </html>
以下是模板\heading.html 代码:
<html> <head> <title>TurboGears Templating Example</title> </head> <body> <h1>This is page Header</h1> </body> </html>
以下是模板\footer.html
<html> <head> <title>TurboGears Templating Example</title> </head> <body> <h3>This is page footer</h3> </body> </html>
使用 gearbox 启动开发,并在浏览器中输入https://127.0.0.1:8080/include。渲染的输出将如下所示:
这样就可以实现视图的模块化构建。如果 xi:include 指令中提到的资源不可用,则会引发错误。在这种情况下,可以通过使用 xi:fallback 加载备用资源。
<xi:include href = “main.html”> <xi:fallback href = ”default.html”/> </xi.include>
包含内容可以动态化,因为 href 属性可以包含表达式。
在 root.py 中添加以下控制器。
@expose('hello.templates.ref-include') def refinclude(self): return {'pages':['heading','main','footer']}
将以下代码另存为模板文件夹中的 ref-include.html。
<html xmlns = "http://www.w3.org/1999/xhtml" xmlns:py = "http://genshi.edgewall.org/" xmlns:xi = "http://www.w3.org/2001/XInclude"> <head> <title>TurboGears Templating Example</title> </head> <body> <xi:include href = "${name}.html" py:for = "name in pages" /> </body> </html>
在启动服务器之前,请确保模板文件夹具有 heading.html、main.html 和 footer.html。在浏览器中输入https://127.0.0.1:8082/refinclude以获取以下输出
广告