📜  TurboGears-服务模板

📅  最后修改于: 2020-10-19 03:27:39             🧑  作者: Mango


尽管可以将HTML内容返回给浏览器,但为了获得更高级的输出,始终首选使用模板引擎。在齿轮箱“ quickstarted”的完整堆栈项目中,Genshi被启用为默认模板渲染器。但是,在最小的应用程序中,需要安装并启用Genshi(或任何其他模板引擎,例如jinja)。 Genshi模板引擎允许使用纯xhtml编写模板,并对其进行验证以在编译时检测问题并防止提供损坏的页面。

通过使用点分引用来引用模板。在我们的Hello项目中,提供了一个用于存储模板网页的模板目录。因此sample.html将被称为hello.templates.sample (未提及扩展名)。 TurboGears通过暴露的装饰器渲染此模板,以通过tg.render_template()函数将控制器方法链接到该模板。

公开的控制器函数返回一个Python字典对象。该字典对象又传递给链接的模板。模板中的占位符填充有字典值。

首先,让我们显示一个带有纯HTML脚本的网页。公开的控制器返回一个空的字典对象,因为我们不打算发送任何要在HTML脚本中进行解析的数据。

如何创建示例HTML

我们的sample.html在下面给出。确保将其存储在项目的模板目录中。

TurboGears Templating Example
   
    
   
      

Hello, Welcome to TurboGears!.

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

在模板文件夹( template \ sample.html )中创建sample.html

TurboGears Templating Example
   
    
   
      

Hello, my name is ${person}!.

在上面的HTML代码中, $ {person}是占位符。在浏览器中输入http:// localhost:8080 / sample?name = MVL作为URL。此URL映射到我们的根控制器中的sample()方法。它返回一个字典对象。这是由模板目录中的链接模板页面sample.html选择的。然后,在网页中将$ {person}替换为MVL。

也可以在控制器函数访问HTML表单数据。 HTML表单用于发送表单数据。

结果