学习Python也有一段时间了,最近琢磨了一个增,删,改,查的小dome,当然要有一个相对清晰的web界面,于是利用这几天的时间研究了下mako模板的单独使用.mako是Python的一种模板语言,当然既然是模板语言就有它自己的一套语法存在.首先在自己的机器上安装一个mako的运行环境,这个很简单,我用的是easy_install的方法,很快而且很顺利的安装完毕.要想知道是否安装成功了,只需要进入到你安装的Python目录下面是否存在script文件夹目录.接下来就是开始折腾mako的语法结构了,其实mako的语法在静态的语法结构上完全可以引用html的格式来书写,当然也有很多不同之处,要用到mako模板首先需要导入模板和引用模板:
from mako.template import Template
mytemplate = Template(filename='test.mako')
return [mytemplate.render()]
我这里写了一个test.mako的文件,文件内容如下:
<html>
<head>
<title>TodoList</title>
</head>
<body>
<form>
<table border="1" style="margin-top:100px;" cellspacing="10" cellpadding="10" align="center" bordercolor="green">
<tr>
<td>Todo</td>
<td>Description</td>
<td>Owner</td>
<td>Priority</td>
</tr>
% for item in todos:
<tr>
<td>${item.id}</td>
<td>${item.todo}</td>
<td>${item.owner}</td>
<td>${item.priority}</td>
</tr>
% endfor
</table>
</form>
</body>
</html>
这里也许你会发现这不是html的格式吗,是的,但是注意% for item in todos:
<tr>
<td>${item.id}</td>
<td>${item.todo}</td>
<td>${item.owner}</td>
<td>${item.priority}</td>
</tr>
% endfor
循环遍历的部分跟我们的html或者EL表达式还是不一样的,这里有它自己的语法规范.基于mako的中文方面的资料很少,只能上http://www.makotemplates.org/看看它的语法结构,本人也是英语半桶水,但是有什么办法了,还是咬紧牙继续看下去吧.再发一个python的增删改查
def addOne(env, resp):
qs=pkgQueryStr(env['QUERY_STRING'])
if qs.has_key('todo'):
new=Todos()
new.id=Todos().all()[-1].id+1
new.todo=qs.get('todo','')
new.owner=qs.get('owner')
new.priority=int(qs.get('priority','1'))
new.put()
return ['a new todo added!<br>']
return ['Wrong add operation:(']
def updateOne(env, resp):
qs=pkgQueryStr(env['QUERY_STRING'])
id=qs.get('id')
item=Todos().get('id',int(id))
if qs.has_key('todo'):
# item.id=int(qs.get('id'))
item.update('id', int(id), todo =qs.get('todo',''), owner =qs.get('owner'),priority=int(qs.get('priority','1')) )
return ['update todo sucess!<br>']
return ['Wrong update operation:(']
def deleteOne(env ,resp ,id):
Todos().delete('id',int(id))
todos=Todos().all()
mytemplate = Template(filename='todolist.mako')
return [mytemplate.render(todos=todos)]
分享到:
相关推荐
2. **内联表达式**:Mako允许在模板中直接使用Python表达式,比如`${expr}`,这使得动态内容的生成变得简单。 3. **函数与方法调用**:模板可以直接调用Python函数和对象的方法,无需额外的转换步骤,增强了模板的...
6. **API参考**:API参考部分(1.7)会提供详细的Mako模板引擎API的使用说明,这对于开发者来说是理解和使用Mako模板引擎的核心部分。 7. **语法**:Mako模板引擎的语法部分(2Syntax)可能解释了Mako模板中使用的...
通过阅读源代码和相关文档,你可以学习到如何配置 Django 以使用 Mako 作为默认的模板引擎,以及如何编写 Mako 模板来替代 Django 的原生模板语言。 总的来说,Django Mako 为 Python Web 开发提供了一种新的选择,...
Mako使用输出缓存机制来优化性能,对于计算昂贵的操作,只在首次执行时计算结果,后续请求则直接从缓存中获取。 2.3 展开与执行 模板在运行时被展开为Python代码,然后执行这些代码以生成最终的输出。展开过程中,...
4. **内联代码**:Mako允许在模板中使用`和`%>`包围的Python代码块,直接执行Python语句,增强了模板的功能。 5. **模板缓存**:Mako可以缓存编译后的模板,提高性能,减少不必要的解析和编译时间。 6. **模板局部...
2. **高效的执行**:Mako 使用预编译机制,模板在首次运行时会被编译成 Python 代码,提高了执行效率。 3. **灵活的插值**:Mako 支持多种字符串插值方式,包括 `${expression}`、`%{...}` 和 `#{...}`,可以根据...
相比而言,Django 内建的模板引擎,为了维持所谓模板语法的纯粹性和简单性,更纯粹的满足 MVC 模式的规定,牺牲了很多灵活性,一些高级的功能不得不利用 tag 和 filter 来实现,其写法并不太方便。因此,将 Mako ...
MAKO模板引擎是Python社区广泛使用的模板库,它提供了灵活的语法,允许开发者在模板中编写动态逻辑,从而在运行时生成定制化的输出。 在【描述】中提到,“大生成器”是这个项目的核心概念,暗示了其设计目标是为了...
《Mako模板引擎:在Ansible自动化部署中的关键角色》 在现代的IT环境中,自动化运维工具如Ansible已经成为了不可或缺的一部分。...理解并掌握"Mako"的使用,对于提升Ansible自动化运维的效率和质量具有重要的意义。
在Pyramid中使用Mako,首先需要安装`pyramid_mako`这个库,它是Pyramid官方支持的Mako集成包。安装完成后,可以在配置文件中设置默认的模板引擎为Mako,这样Pyramid就会自动处理Mako模板。 ```python from pyramid....
Mako是一个高性能的Python模板库,它的语法和API借鉴了很多其他的模板库,如Django、Jinja2等等。 基本用法 创建模板并渲染它的最基本的方法是使用 Template 类: from mako.template import Template t = ...
9. **与Web框架的集成(Integration with Web Frameworks)**:Mako与其他Python Web框架如Pylons、Pyramid、Flask和Django等有很好的集成,可以直接在这些框架中使用Mako模板。 在解压Mako-0.7.0.tar.gz后,你会...
适用于Python的Mako模板Mako是用Python编写的模板库。 它提供了一种熟悉的非XML语法,可以将其编译为Python模块以实现最佳性能。 Mako的语法和API借鉴了许多其他最佳思想,包括Django模板,猎豹,Myghty和Genshi。 ...
"aiohttp_mako"库正是将这两个强大的工具结合在一起,它提供了在aiohttp应用中使用Mako模板的功能。这意味着开发者可以在异步web应用中利用Mako的强大模板能力来生成动态页面。通过这个库,你可以: 1. **快速构建...
使用模板引擎:选择适合的模板引擎库,如Jinja2、Mako等,并导入相关库。 渲染模板:使用所选的模板引擎库将数据填充到模板中,生成最终的打印内容。具体的渲染方式和语法会根据所选的模板引擎而有所不同。 打印...
Mako G相机技术手册详细介绍了Mako G系列相机的功能、接口、兼容标准、安装及使用。以下将根据手册提供的信息,详细解释其中包含的技术知识点。 标题中提到的"Mako G Technical Manual"表明文档是一份技术手册,...
而Mako模板则是一个高性能、灵活且功能丰富的模板语言,它的设计目标是提供一种易于阅读、编写和维护的模板语法。 首先,我们来了解一下Django。Django的核心特性包括模型(ORM)用于数据库操作,URL路由系统,以及...
Mako is a template library written in Python. It provides a familiar, non-XML syntax which compiles into Python modules for maximum performance. Mako's syntax and API borrows from the best ideas of ...
原理是我们在pyramind的before render event 中插入我们的helper 1. 创建helper.py文件,在里面添加上我们常用的方法 2. 在__init__.py文件中: 加入这个函数:复制代码 代码如下... 在模板中使用定义的方法,h.method()
使用mako模板构建模块化OpenLayers客户端的简单模板处理器。 ./anathem.py theme 在主题子目录中的配置文件“ theme.yaml”上运行处理器。 主题确定如何在模板子目录中组装模板。 范本 模板遵循mako include语法。...