📜  CherryPy-表示层

📅  最后修改于: 2020-10-26 05:23:35             🧑  作者: Mango


表示层确保通过它的通信以目标接收者为目标。 CherryPy通过各种模板引擎维护表示层的工作。

模板引擎借助业务逻辑获取页面的输入,然后将其处理到仅针对目标受众的最终页面。

Kid —模板引擎

Kid是一个简单的模板引擎,其中包括要处理的模板的名称(这是必需的)和在渲染模板时输入要传递的数据。

首次创建模板时,Kid会创建一个Python模块,该模块可用作模板的缓存版本。

kid.Template函数返回模板类的实例,该实例可用于呈现输出内容。

模板类提供以下命令集-

S.No Command & Description
1.

serialize

It returns the output content as a string.

2.

generate

It returns the output content as an iterator.

3.

write

It dumps the output content into a file object.

这些命令使用的参数如下-

S.No Command & Description
1.

encoding

It informs how to encode the output content

2.

fragment

It is a Boolean value which tells to XML prolog or Doctype

3.

output

This type of serialization is used to render the content

让我们以一个例子来了解孩子如何工作-

${title}
      
   
    
    
      

${message}

The next step after saving the file is to process the template via the Kid engine. import kid params = {'title': 'Hello world!!', 'message': 'CherryPy.'} t = kid.Template('helloworld.kid', **params) print t.serialize(output='html')

孩子的属性

以下是Kid的属性-

基于XML的模板语言

它是一种基于XML的语言。 Kid模板必须是具有正确命名约定的格式正确的XML文档。

Kid在XML元素内实现属性,以更新到达该元素要遵循的操作的基础引擎。为了避免与XML文档中的其他现有属性重叠,Kid引入了自己的名称空间。

...

可变替代

Kid带有变量替换方案和一种简单的方法-$ {variable-name}。

变量可以在元素的属性中使用,也可以用作元素的文本内容。每次执行时,Kid都会评估该变量。

如果用户需要将字面量字符串的输出作为$ {something},则可以使用变量替换通过将美元符号加倍来对其进行转义。

条件陈述

为了在模板中切换不同的情况,使用以下语法-

...

在这里,tag是元素的名称,例如DIV或SPAN。

该表达式是Python表达式。如果作为布尔值评估为True,则该元素将包含在输出内容中,否则将不属于输出内容。

循环机制

为了在Kid中循环元素,使用以下语法-

...

在这里,tag是元素的名称。该表达式是一个Python表达式,例如[…]中的值。

以下代码显示了循环机制的工作原理-

${title}
      
   
    
   
      
A few songs
Artist Album Title
${info['artist']} ${info['album']} ${info['song']}
import kid params = discography.retrieve_songs() t = kid.Template('songs.kid', **params) print t.serialize(output='html')

带有循环机制的上述代码的输出如下-

循环输出