${next.body()} 在pylons中设置为utf-8编码 修改模板路径: config/environment.py 中的 # Create the Mako TemplateLookup, with the default autoescaping 使用 <%doc> 做多行注释 <%text>更进一步,注释可以包含 模板中的变量, <%text> 控制结构: 用%开头,结束如果是IF % endif 可以使用<% %>写代码段,在代码段的变量可以在模板中的其它部分 以 ${} 调用 得到当前URL ${h.url_for()} <%include>类似于其他模板语言的一个标签,%include 接受一个文件名称作为参数,调用被引用文件的输出结果。 <%include file="header.html"/>
hello world
<%include file="footer.html"/>
<%def>%def 标签用于定义包含一系列内容的一个 Python 函数,此函数在当前模板的其他某个地方被调用到: <%def name="myfunc(x)">
this is myfunc, x is ${x}
</%def>
${myfunc(7)}
%def 标签比 Python 的 def 要强大一些,因为 Mako 的编译器为 %def 提供了很多额外服务,比如可以导出 defs 为模板“方法”,自动传播当前的 context (原文:automatic propigation of the current Context),缓冲/过滤/缓存 标志位,以及带有内容的 def 调用,这使得 defs 的包可以被以参数的形式,提供给其他的 def 调用(不像听起来那么困难)。 <%inherit>允许模板可以在继承链中安排其自身的位置。这是其他很多模板语言都有的一个熟悉的概念。 <%inherit file="base.html"/>
当使用 %inherit 标签时,首先,控制权被转交给继承树最顶层的父模板,由它来决定如何配合继承自它的子模板来处理其中的调用区域(calling areas)的内容。Mako 在这方面提供了很多灵活性,包括动态继承(dynamic inheritance), 内容包装(content wrapping), 以及多态的方法调用(polymorphic method calls). 详见 Inheritance。 <%call>call 标签用于调用 <%defs %> 标签,可传递额外的内嵌内容。 ContextContext 是模板被第一次执行前创建的一个核心对象,它负责和模板外部做所有的交互。它由两个主要的组件组成,1. 输出缓冲区,这是一个类似文件的对象,比如 Python 的 StringIO;2. 变量字典,其中的所有变量均可在模板中自由引用,该字典是由传递给 template.rener() 方法的参数,以及一些由 Mako 运行时环境提供的内建变量组成。 % for key in context.keys():
|
mako模板笔记
最新推荐文章于 2022-03-01 15:08:05 发布
转自:
http://hi.baidu.com/1878/blog/item/81fb8fd409f92809a08bb713.html