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,浏览器将显示以下结果。

Display Result

如上所述,字典对象作为参数集合发送到 Genshi 模板。此模板包含“占位符”,这些占位符将使用从控制器接收的参数动态填充。

让我们更改 sample() 函数以将字典对象发送到 sample 模板。

@expose("hello.templates.sample")
   def sample(self,name):
      mydata = {'person':name}
      return mydata

在 templates 文件夹中创建 sample.htmltemplates\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 表单用于发送表单数据。

Result
广告
© . All rights reserved.