📅  最后修改于: 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脚本中进行解析的数据。
我们的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表单用于发送表单数据。