使用mako模板引擎使bottle数据渲染更加灵活

这两天在整理一个爬虫数据导出的项目,用到的框架是bottle,话说bottle自带的那个模板,太搓了,而且在一些小页面项目上,不能夹在python的逻辑。 有用过jinja2 的朋友,知道他有个叫做filter的过滤器的东西。python独立的模板,我用过jinja2和mako,看了下文档说,jinja2的filter在bottle里面貌似有问题,我自己也没尝试,也懒得测试了。 看老外用mako,我也就用mako作为bottle的模板引擎了。

SimpleTemplate implements the BaseTemplate API:from bottle import SimpleTemplatetpl = SimpleTemplate('Hello {{name}}!')tpl.render(name='World)u'Hello World!'In this document we use the template() helper in examples for the sake of simplicity:from bottle import templatetemplate('Hello {{name}}!', name='World')u'Hello World!'

bottle 是支持mako的扩展,说起mako这个模板,他是可以和jinja2 pk的模板,他可以自由的嵌入python逻辑。 这样的方式,有好处也有坏处。好处是方便,坏处就是不利于以后的扩展, 而且代码不干净。

<%from bottle import requestfrom admin.config.consts import ROLEs = request.environ.get(‘beaker.session’)a = s.get(‘role’, None)%> <tr> <td>下载任务编号</td> <td>项目/关键词</td> <td>起止时间</td> <td>创建时间</td> <td>状态</td>% if s.get(‘role’, None) == ROLE.ROOT: <td>功能</td>%endif </tr> </thead> <tbody> % for task in tasks: <tr id=”row_${task[‘_id’]}” > <td>${int(task[‘_id’])}</td> <td>${task[‘filename’].split(‘-’)[1]}</td> <td> <span>start:&nbsp;${task[‘start_time’].strftime(‘%Y-%m-%d’)}</span> <br> <span>end:&nbsp;${task[‘end_time’].strftime(‘%Y-%m-%d’)}</span> </td> <td>${task[‘created_on’].strftime(‘%Y-%m-%d %H:%M’)}</td>

<% from admin.config.consts import DOWNLOAD_STATUS %> % if task[‘status’] == DOWNLOAD_STATUS.COMPLETED: <td>已完成 <a href=”http://blog.xiaorui.cc/2014/10/29/%e4%bd%bf%e7%94%a8mako%e6%a8%a1%e6%9d%bf%e5%bc%95%e6%93%8e%e4%bd%bfbottle%e6%95%b0%e6%8d%ae%e6%b8%b2%e6%9f%93%e6%9b%b4%e5%8a%a0%e7%81%b5%e6%b4%bb-2/”/download/file/${task[“‘filename’]}” target=’_blank’>点此下载</a></td> % elif task[‘status’] == DOWNLOAD_STATUS.WAITING: <td>等待中 </td> % elif task[‘status’] == DOWNLOAD_STATUS.DELETE: <td>已删除</td> % elif task[‘status’] == DOWNLOAD_STATUS.CONTINUE: <td>继续</td> % elif task[‘status’] == DOWNLOAD_STATUS.PAUSE: <td>暂停</td> % else: <td>导出中 <td>

上面是个我在项目中的一个例子,大家可以举一反三的玩好mako模块 。

背起简单的行攘,沐浴自由的风。

使用mako模板引擎使bottle数据渲染更加灵活

相关文章:

你感兴趣的文章:

标签云: