limodou的文档介绍,uliweb的模板是基于webpy框架的模板,是一种非常简洁的模板表示方式,语法很简单,除了标准的html语言外,还可以包含下面介绍的语法代码,需要注意的是,这些语法代码中的名称都是由view函数通过字典返回的key值来表示的。

 

所有与Python相关的模板代码均需要放置在{{}}之中!

 

{{ = result }} 用来输出标记,result可以为一个变量或者一个函数调用,系统会自动对输出的内容进行转义处理,需要注意的是 = reuslt之间有一个空格,或者=左右均无空格,这原本是一个bug,在发了一份邮件给limodou后,马上就修正了。

 

如果result是一个函数func{{ = func }} 将得到funcrepr显示,如果需要调用函数,则需要将代码编写成 {{ = func() }},这是一个非常有用的方法,可以在html中调用各类合适的方面的内部函数,其实这是一个任何一个合法的Python语句都可以的函数,如果我们故意将这个函数写错,在http://localhost:8000/主页面上将显示出错误消息,在最后一行,可以看到是采用out.write(func())方式写出html代码的,因此只要是合法的代码(能够返回一个string对象)的值,都可以作为out.write()的参数,既然我们知道了{{=}}中的内容是作为out.write参数,而且为string对象,那么我们也可以直接使用{{="your"}}来输出一个字符串,尽管"your"并不是我们从view中获取得到的一个变量,但是它确实可以使用!!

 

从上面的分析我们也可以知道,模板的代码最终都将会转换成python中的代码,那么任何内嵌的函数都是可以使用的,由此我们可以构建一个复杂的函数来输出我们当前文件的内容

 

 

{{ }} 语句块中包含的是Python的代码语句,此Python语句需要pass语句块来进行结束。如果在模板中编写如下代码:

{{ for local in dic: }}

{{=local }}

{{ pass}}

uliweb后台,将执行下面的代码:

out.write('\n\n', escape=False)

for local in dic:

   out.write('\n', escape=False)

  

   out.write(local)

 

   out.write('\n', escape=False)

   pass

out.write('\n\n', escape=False)

因此我们很容易在{{}中编写Python语句,在{{=}}中使用Python的变量,或者函数等内容!

 

 

 

{{ extend template }} 将扩展有template指定的模板,template可以为字符串,表示从父模板中继承,在最新的版本中,在原先的教程中,说是需要在父模板中定义一个{{include }},这样在{{extend}}之后的所有内容都将插入到这个位置,但是如果在{{extend}}之前还有内容将插入到父模板的最前面去。通过这种方式就可以在子模板中定义变量,但是在父模板中使用。就是将变量的定义放在{{extend}}之前就行了!

 

也可以通过include方式载入模板,常用的一个模板是menu,一般在extend模板之后include的。

menu模板的定义如下:

{{

menus = [

    ('settings', 'Settings', '/admin'),

    ('appsinfo', 'Apps Info', '/admin/appsinfo'),

    ('urls', 'Urls', '/admin/urls'),

    #('application',"Application", '/admin/app'),

    #("variable","Variable","/admin/var"),

    ('request', "Request", "/admin/request"),

]

def menu(current='settings'):

    for id, caption, link in menus:

        if id == current:

            out.write('<li >,了解其技术发展。


这个分析的uliweb模板,也不是最新版本的。



已经不存在该方法了!

相关文章: