对于mako模板的一些使用心得

   学习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)]
   

你可能感兴趣的:(html,Web,python)