A-A+

python bottle 框架基础教程:模板语法

2015年05月25日 bottle 评论 2 条 阅读 10,004 views 次

模板语法类似于 Python 的语法。它要确保语句块的正确缩进,所以你在写模板的时候无需担心会出现
缩进问题。详细的语法描述可看 SimpleTemplate 模板引擎 。

虽然 Python 是一门强大的语言,但它对空白敏感的语法令其很难作为一个模板语言。 SimpleTemplate
移除了一些限制,允许你写出干净的,有可读性的,可维护的模板,且保留了 Python 的强大功能。

在上章《python bottle 框架基础教程:模板使用 》例子中学习到了 {{...}} 语句的用法。只要在 {{...}} 中的 Python 语句返回一个字符串或有一个字符串的表达形式,它就是一个有效的语句。

 

嵌入 Pyhton 代码

一行以 % 开头,表明这一行是 Python 代码。它和真正的 Python 代码唯一的区别,在于你需要显式地在末尾添加 %end 语句,表明一个代码块结束。这样你就不必担心 Python 代码中的缩进问题,SimpleTemplate 模板引擎的 parser 帮你处理了。不以 % 开头的行,被当作普通文本来渲染。只有在行首的 % 字符才有意义,可以使用 %% 来转义。

 

python后端代码示例:

  1. [root@linuxyw bottle]# cat main.py 
  2. #/usr/bin/env python
  3. #coding=utf-8
  4. from bottle import route, run
  5. from bottle import template,view
  6. @route('/login')
  7. def login():
  8.         return template('login')
  9. @route('/info')
  10. @view('info')
  11. def info():
  12.         name = '戴儒锋'
  13.         age = '30'
  14.         blog = 'www.linuxyw.com'
  15.         qq = '63780668'
  16.         book = ['python','linux','php']
  17.         price = {'pc':4000,'phone':2000,'bike':600}
  18.         data = {'tname':name,'tage':age,'tblog':blog, 'tqq': qq,'tbook':book,'tprice':price,'tnum':''}
  19.         return data
  20. run(host='0.0.0.0', port=8080, debug=True)   #开启服务

 

模板代码:

  1. [root@linuxyw bottle]# cat views/info.tpl
  2. <html>
  3.     <head>
  4.     <title>会员中心</title>
  5.     </head>
  6.     <body>
  7.         <p><h2>会员信息</h2></p>
  8.                 如果tname后端有返回值(即非空值),就显示出来</br>
  9.                 %if tname:
  10.                         姓名:{{tname}}</br>
  11.                 %end
  12.                 <p></p>
  13.                 也可以用if else语句</br>
  14.                 %if tnum:
  15.                         tnum:{{tnum}}</br>
  16.                 %else:
  17.                         tunm没有定义</br>
  18.                 %end
  19.                 <p></p>
  20.                 也可以用if xx == 'yy'语句</br>
  21.                 %if tage == '30':
  22.                         哈哈,你老了!</br>
  23.                 %else:
  24.                         你年轻吗?</br>
  25.                 %end
  26.                 <p>如果tnum没有定义那就用默认值666::{{get('tnum','666')}}</p>
  27.                 所有的书名用for循环遍历:</br>
  28.                 %for col in tbook:
  29.                 {{col}}</br>
  30.                 %end
  31.     </body>
  32. </html>

 

浏览器访问后显示(http://ip+8080/info):

bottle模板效果

bottle模板效果

 

总结:

模板上的语法,有点类似于python中的语法,注意用%开头,end结尾,当用end结尾时,不需要加冒号

%if tname,用这个语法时,首先需要python后端有定义这个tname变量,即在return时,要有定义,要不然就会出错;如果return没定义的变量,则需要用{{get('tnum','666')}}这种方式,这个语法是如果检测到一个没有定义的变量时,就直接定义这个变量,并赋值666给它,避免模板语法出错;%for循环用起来和python类似了。

 

更多的语法,可以查看bottle官网文档或其它教程

官方文档:http://www.bottlepy.org/docs/dev/index.html

SVN请跳转至:教程总目录

这些代码已提交到SVN中,有需要的朋友可在SVN下载

.

关键词:

2 条留言  访客:0 条  博主:0 条   引用: 2 条

来自外部的引用: 2 条

  • python bottle框架(WEB开发、运维开发)教程 | linux系统运维
  • python bottle 框架实战教程:配置模板 | linux系统运维

给我留言

Copyright © linux系统运维 保留所有权利.   Theme  Ality 粤ICP备13023035号-1

用户登录

分享到: