代码改变世界

mako的context及loop关键字(三)

2012-07-27 15:15  ubunoon  阅读(714)  评论(0编辑  收藏  举报

mako的context是一个保留的名称,其包含了一些下面的方法

 

context[key]或者context.get(key,default=None),类似dict

keys 所有context中定义的名称

kwargs,返回一个context的dict变量,通常在传播变量时有用

write 写到缓冲区

lookup 返回一个TemplateLookup的实例。

 

Loop上下文(new in version 0.7)

在%for的block中,有一个保留字loop,便于迭代,如${loop.index}

 

无论如何形式的循环,loop都是基于0的迭代索引。

loop.index, loop.even, loop.odd, loop.first(用来表明是否为第一个迭代),loop.reverse_index, loop.last。

 

在0.7版本中,cycling可以在是否提供__len__方法中使用,

 

<ul>

  %for item in ('spam', 'ham', 'eggs'):

  <li class="${loop.cycle('even', 'odd')}">${item}</li>

  %endfor

</ul>

 

loop.parent用来访问上一级的loop循环

 

在mako 0.7版本中loop成为保留字,为了兼容之前的,可以在TemplateLookup中屏蔽,enable_loop=False,或者在<%page>中使用 <%page enable_loop="True" />

 

下面是所有内建的关键字

context

local

self

parent

next

caller

loop

capture

UNDEFINED

pageargs

 

其中这几个是保留字 context, UNDEFINED, loop